在回调函数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);
当有新连接时,将触发回调函数on_recv
。
并且在回调函数on_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
。
这里是否有任何问题/陷阱,以便我更好malloc
一个新的conn_ev?
谢谢!
答案 0 :(得分:0)
您必须确保在修改前不使用该事件。如果你正处于这个特定事件的回调并且它不是一个持久的事件,你可能没事,但我建议在任何情况下都调用event_del()。
虽然它可能有效,但您不应该使用malloc()和event_set(现在已弃用)。改为使用event_new(),或者至少用event_assign()替换event_set。