【发布时间】:2012-10-10 13:09:31
【问题描述】:
我正在用epoll library 用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 结构的最佳方法是什么?
感谢您的宝贵时间。
【问题讨论】:
-
如果“我们都知道会发生什么”,那你为什么要问?
-
当我说“我们都知道会发生什么”时,我的意思是当函数返回时释放堆栈分配的内存。