我做的内存分析,以我的软件的一点点,用的valgrind的以下命令运行标准内存泄漏检查后Valgrind的和内存泄漏
valgrind --tool=memcheck --leak-check=full ./path_to_program
我得到了以下总结:
= = 12550 == LEAK内容:
== 12550 ==绝对丢失:597170个字节在7个块
== 12550 == indirectl ÿ丢失:120个字节在10个块
== 12550 ==可能丢失:770281个字节在1455块
== 12550 ==仍可达:在2319块
== 12550 181189个字节= =被抑制:0块中的0字节
== 12550 ==不显示可达块(找到指针的块)。
== == 12550要看到他们后,再重新用:--leak检查=全--show-可达= YES
== == 12550
== == 12550计数为-v
== == 12550错误摘要:从325个上下文325个错误(抑制:176 11)
它看起来并不很不错,我检测到并取消错误,请重新运行与,所以我的问题是
为什么不是我的程序爆炸,如果它有所有这些泄漏?
而且还之间有什么区别:
- 肯定失去
- 间接失去
- 可能失去
- 仍可达
,我怎么可以尝试修复他们?
为什么你会期望它爆炸? – 2012-03-31 13:41:02
@OliCharlesworth因为它有很多分配的内存没有释放 – Matteo 2012-03-31 13:41:41
@Matteo:在最差的情况下,这几乎是几MB,除非你处于非常有限的环境中,否则没有理由“炸毁”它。 – Mat 2012-03-31 13:42:48