能否修改libevent`struct event`变量?

能否修改libevent`struct event`变量?,c,network-programming,libevent,C,Network Programming,Libevent,在on callback functionon_accept中,我创建了一个事件conn_ev conn_ev = (struct event *)malloc(sizeof(struct event)); event_set(conn_ev, connfd, EV_READ, on_recv, conn_ev); event_base_set(base, conn_ev); event_add(conn_ev, NULL); 当有新连接时,将触发\u recv

在on callback function
on_accept
中,我创建了一个事件
conn_ev

    conn_ev = (struct event *)malloc(sizeof(struct event));
    event_set(conn_ev, connfd, EV_READ, on_recv, conn_ev);
    event_base_set(base, conn_ev);
    event_add(conn_ev, NULL);
当有新连接时,将触发\u recv上的回调函数

在_recv(int connfd,short event,void*conn_event)
上的回调函数
中,我有

    conn_ev = (struct event *) conn_event;
    event_set(conn_ev, connfd, EV_WRITE, on_send, conn_ev);
    event_base_set(base, conn_ev);
    event_add(conn_ev, NULL);
因此,
conn_ev
在这个回调函数中被修改

这里是否存在任何可能的问题/陷阱,以便更好地使用新连接


谢谢

在修改事件之前,必须确保未使用该事件。如果您处于这个特定事件的回调中,并且它不是一个持久性事件,那么您可能会没事,但我建议您在任何情况下都调用event_del()

虽然它可以工作,但不应使用malloc()和event_set(现在已弃用)。改用event_new(),或者至少用event_assign()替换event_set