gpt4 book ai didi

c - 调试fopen和fclose,打开文件太多

转载 作者:行者123 更新时间:2023-11-30 17:05:45 25 4
gpt4 key购买 nike

我使用的是 Windows 7,使用 gcc version 4.8.1 进行编译。我有一个大型多线程 C 程序,它对 fopen 进行大量调用和fclose 。如果它运行足够长的时间,它就会开始无法打开文件。我使用 <errno.h> 进行调试我得到了 Too many open files错误,尽管一次打开的文件数不应该超过几个。我已经多次查看代码,但找不到错误(对于每一次对 fopen 的调用,都会有一个对 fclose 的相应调用被执行,并且没有函数使用多个 FILE* 变量)。还有进一步的调试建议吗?特别是有一个函数可以返回当前打开的文件的数量吗?

最佳答案

这是一个“经典”的资源泄漏问题。最有可能存在一个文件被打开但未关闭的代码路径。错误处理代码路径是常见的嫌疑对象之一。您可以在网络上搜索“调试资源泄漏 c”或类似内容。

找到有关跟踪内存资源泄漏的工具的信息会更容易(我刚刚在谷歌上搜索过)。您可以使用内存资源泄漏工具来解决此问题,方法是每次打开文件时分​​配一小块内存,然后在关闭文件时释放内存。如果内存泄漏工具是一个相当好的工具,它会为您提供任何泄漏内存的堆栈跟踪或源文件/行号。该位置将位于您打开的文件旁边。

关于c - 调试fopen和fclose,打开文件太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35116155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com