我正在对我的软件进行一些内存分析,在运行了valgrind以下命令的标准内存泄漏检查后:
valgrind --tool=memcheck --leak-check=full ./path_to_program
我得到了以下总结:
==12550== 内存泄漏汇总: ==12550== 明确泄漏: 7个块中的597,170字节 ==12550== 间接泄漏: 10个块中的120字节 ==12550== 可能泄漏: 1,455个块中的770,281字节 ==12550== 仍然可访问: 2,319个块中的181,189字节 ==12550== 抑制的: 0个块中的0字节 ==12550== 不显示可访问块(已找到指针的块)。 若要查看它们,请重新运行:--leak-check=full --show-reachable=yes ==12550== ==12550== 要检测到和抑制错误的计数,请使用-v重新运行。 ==12550== 错误摘要:来自325个上下文的325个错误(抑制:来自11个上下文的176个)
这不太好,所以我的问题是:
为什么我的程序没有崩溃,即使有这些内存泄漏?
而且definitely lost、indirectly lost、possibly lost和still reachable有什么区别?我该如何尝试修复它们?