2

epoll事件结构中有一个void指针。我正在为此分配内存并在其他地方使用它。现在当我想把fd从epoll列表中取出时,这个指针会自己释放吗?(逻辑思维链是事件结构在内部维护,可能由内核维护。所以它会释放事件结构和分配给指针的内存)还是我必须显式地释放它?

PS我看到一段代码没有释放分配给指针的内存。我觉得应该明确地释放它。

4

2 回答 2

4

不,指针不会自行释放。就内核而言,它只是一个不知道如何处理的不透明值。它不知道它是指向堆栈、堆、数据段还是其他东西的指针。所以它不可能知道它应该free()这样做。

基本规则是,除非文档明确说明,否则您有责任free记住您的任何记忆malloc。因此,当您从 epoll 列表中删除文件描述符时,您还需要指向您编辑free的相应指针。malloc

于 2012-05-01T05:04:23.843 回答
2

我以前没有使用epoll过,但我认为你必须释放的一个非常有力的论据是,它epoll_data是一个联合,所以任何其他代码都无法释放指针指向的任何东西。

于 2012-05-01T04:59:21.847 回答