C++ 是否存在valgrind不会报告现有泄漏/错误的情况

C++ 是否存在valgrind不会报告现有泄漏/错误的情况,c++,c,debugging,memory-leaks,valgrind,C++,C,Debugging,Memory Leaks,Valgrind,我是第一次检查valgrind,我喜欢当前的结果,但是我很好奇valgrind是否总是返回它遇到的内存泄漏,或者是否有一些可能逃过它,具体取决于程序是如何关闭的。例如,如果使用“killall-9程序”终止程序 这是我当前程序的结果,通过在Ubuntu系统监视器中使用“结束进程”停止 ==10182== HEAP SUMMARY: ==10182== in use at exit: 0 bytes in 0 blocks ==10182== total heap usage: 8,7

我是第一次检查valgrind,我喜欢当前的结果,但是我很好奇valgrind是否总是返回它遇到的内存泄漏,或者是否有一些可能逃过它,具体取决于程序是如何关闭的。例如,如果使用“killall-9程序”终止程序

这是我当前程序的结果,通过在Ubuntu系统监视器中使用“结束进程”停止

==10182== HEAP SUMMARY:
==10182==     in use at exit: 0 bytes in 0 blocks
==10182==   total heap usage: 8,747,225 allocs, 8,747,225 frees, 1,352,535,387 bytes allocated
==10182== 
==10182== All heap blocks were freed -- no leaks are possible
==10182== 
==10182== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

这个结果是否证实确实存在零泄漏或上下文错误?

根据,Vallgrind无法检测堆栈越界、全局越界和返回后使用。

谢谢,但我仍然不清楚。例如,我未能初始化属性,并且在调用其对象析构函数时收到上下文错误。这在我使用“killall”时没有发生,但在我第一次使用“end process”时发生了。这将是最后一个被摧毁的目标。我认为valgrind此时仍然能够报告内存问题,这是错误的吗?啊,好吧,我可能误解了你的问题。我不太关注“退出时使用”,而更关注Alloc和frees的数量匹配这一事实。这意味着在整个堆/池被释放之前,您没有任何内存泄漏,所有内存都被正确地单独释放。@BenVoigt-您能在回答中对此进行扩展吗?我不知道系统监视器发送了什么信号。(在命令提示下)使用
kill-TERM pid
kill-kill pid
。第一个应该触发valgrind将跟踪的终止逻辑。在第二种情况下,您的进程和它承载的valgrind库将消失——没有机会报告泄漏。