有一个void pointer在epoll事件结构中。我为此 malloc-ing 内存并在其他地方使用它。现在当我想把这个fd从epoll链表中取出来的时候,这个指针会自己释放吗? (一个逻辑思维链是事件结构在内部维护,可能由内核维护。所以它会释放事件结构和分配给指针的内存)或者我必须显式释放它吗?
附言我看到一段代码没有释放分配给指针的内存。我觉得应该明确地释放它。
最佳答案
不,指针不会自己释放。就内核而言,它只是一个它不知道如何处理的不透明值。它不知道它是指向堆栈、堆、数据段还是其他东西的指针。所以它不可能知道它应该 free()
它。
基本规则是,除非文档明确另有说明,否则您有责任释放
您malloc
的任何内存。因此,当您从 epoll 列表中删除文件描述符时,您还需要释放
您malloc
编辑的相应指针。
关于c - 在 epoll 的事件结构中使用 void ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10393657/