我需要Mac OS X中的文件系统通知,并且正在从/ dev/fsevents中读取数据。在Mac OS X中捕获fsevents的示例代码:http://www.codecollector.net/view/1066/raw_fsevents。在这段代码中,您可以看到从/ dev/fsevents读取的缓冲区在读取后立即被处理。但是当我这样做时,由于处理中创建的延迟而导致事件丢失。所以我创建了一个新的char指针,并从/ dev/fsevents读取缓冲区,并将新的char *添加到队列中,并在新线程中处理队列。但是当我处理'print_event'&'dump_entry'中的char *时,char *指针会被重新分配,并且当我在处理后检查strlen()时,它仅表示0或1个字节长度。所以在处理过程中,内存在泄漏。Mac OS X中fsevents观察器中的内存泄漏
任何想法如何删除已分配的char *,这会泄漏更多内存以获取更多事件。请分享你的想法。提前致谢。
感谢您的回复。我以前读过FSEvents接口不可靠,它可能会错过事件,它看起来像我只能得到目录级通知(我需要排队每个目录)。关于char * allignment,你可以注意到char *,'entry =(entry_t *)(buf + len - remain)的一些变化; '从代码。因此,当char *被完全处理时,当我检查它是否被删除时,它表示该char *的长度为0.这意味着在dump_entry和print_event函数调用期间char *指针被清空。那么我怎么能阻止这个泄漏..? –
当您使用malloc创建新的内存指针时,请记住它(不要将您的原始指针传递给print_event;将它传递给副本)。您稍后可以在原始指针上调用'free'来释放所有内存。 –
如果我拿另一份,然后我将不得不释放它吧..? –