我在回显服务器代码中面临有关 malloc 的问题。
当我使用
uv_default_loop()
时,我可以成功运行我的代码,但使用 malloc(sizeof(uv_loop_t))
时则无法成功运行我的代码。文档中的 libuv-v1.0 支持它。
这是我的代码:
int main(int argc, char** argv) {
loop = malloc(sizeof(uv_loop_t));
uv_tcp_t server;
uv_tcp_init(loop, &server);
struct sockaddr_in addr;
uv_ip4_addr("0.0.0.0", DEFAULT_PORT, &addr);
uv_tcp_bind(&server, (const struct sockaddr*)&addr, 0);//bind
int r = uv_listen((uv_stream_t*)&server, DEFAULT_BACKLOG, on_new_connection);//listen
if (r) {
fprintf(stderr, "Listen error %s\n", uv_strerror(r));
return 1;
}
uv_run(loop, UV_RUN_DEFAULT);
uv_loop_close(loop);
free(loop);
}
我在想这个错误的原因是释放循环的地方不对。我对么?或者如何解决这个问题。
使用
uv_loop_init(loop);
创建循环后需要初始化循环。