虽然搜索valgrind仍然可以访问,但有些人说这不是问题。我们不需要解决它。有人说它需要修复。如果有人可以明确地告诉我这仍然可以达到的逻辑,我会更好。是否必须修复此问题?
[编辑]
我的C程序有以下valgrind输出。我需要修复它吗?
LEAK SUMMARY:
==27333== definitely lost: 0 bytes in 0 blocks.
==27333== possibly lost: 0 bytes in 0 blocks.
==27333== still reachable: 96 bytes in 12 blocks.
==27333== suppressed: 0 bytes in 0 blocks.
答案 0 :(得分:9)
这取决于。 “仍然可以访问”意味着你在退出之前没有释放一块内存,但有一个指向它的指针。
在C ++程序中,这意味着某些对象可能不是delete
d,因此它的析构函数可能没有被运行,因此说某些数据可能尚未保存到磁盘上,例如某些其他操作可能没有被采取,因此你的程序可能会产生意想不到的行为。
但是C程序中没有析构函数,所以你的程序不能依赖于它。同时释放内存需要一些时间,因此在退出时不释放内存可以节省一些时间 - 程序将更快退出(对于包含大量数据的程序,这可能很重要)。
所以IMO如果你的C程序“仍然可以访问”阻塞它不是问题,但是这表明程序中的某些代码没有释放内存,因此重用该代码时可能会出现错误。