使用 malloc for 循环时出现 libuv 访问错误

问题描述 投票:0回答:1

我在回显服务器代码中面临有关 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);
}

我在想这个错误的原因是释放循环的地方不对。我对么?或者如何解决这个问题。

c libuv
1个回答
0
投票

使用

uv_loop_init(loop);
创建循环后需要初始化循环。

© www.soinside.com 2019 - 2024. All rights reserved.