c - 在 epoll 的事件结构中使用 void ptr

标签 c epoll

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

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

最佳答案

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

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

关于c - 在 epoll 的事件结构中使用 void ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10393657/

相关文章:

c - Vala 生成的 C 代码比手写的 C 代码优化了多少?

c - 第二次 recv 调用不接收数据,在 C 中停止执行

linux - 一次性*级别*-触发 epoll() : Does EPOLLONESHOT imply EPOLLET?

linux - 关于epoll和splice的问题

c - 当文件描述符关闭时,有什么方法可以执行回调(在 Linux 上)

c - 为什么EPOLLOUT没有被触发?

c - 通过多次调用该函数将大量内容打印到文件时出现内存泄漏

C 宏 - 未在此范围错误中声明

c - Mongo C 驱动程序通过 _id 访问文档

linux - epoll的实现有没有rfc?