我正在使用epoll 库在 C 中开发服务器,并且我有一个关于如何处理内存的问题struct epoll_event
。我在一些在线示例中注意到,在进行epoll_ctl
调用时,events
参数被分配在堆栈上,然后指针被传递,如下所示:
struct epoll_event ev;
ev.events = EPOLLIN;
epoll_ctl(epfd, EPOLL_CTL_ADD, sockfd, &ev);
现在我们都知道ev
函数返回时会发生什么。我的问题是:epoll 库是在内部复制这些值还是依赖于您传递给堆分配的结构?上面的例子会完全破坏我的反应器实现吗?如果是这样,跟踪我的堆分配epoll_event
结构的最佳方法是什么?
谢谢你的时间。