![]() |
1
3
如果你确定 你的 使用内存,也许不是 你的 马洛奇和自由是问题所在。 如果你在使用libs,你应该仔细检查你是否正确使用了它们。很多都有初始化和释放功能,您很容易忘记,从而导致内存泄漏。 |
![]() |
2
3
内存是真的泄漏了,还是程序运行的时间越长,消耗的内存就越多?换言之,程序是否正在构建一个简单地继续增长的大型动态数据结构(链表等)?只要程序有一个指向内存的指针,它就不是真正的泄漏——但是如果分配从未被释放,那么每个新的分配都将从操作系统中获得更多的内存。这也可以解释为什么你使用的工具没有“泄漏”。 当我不得不这样做的时候,我已经做了一些事情,比如每次我的程序分配内存并释放内存时,都会向平面文件写入日志消息。这些消息将包括文件名和分配内存的程序行,以及分配内存时从malloc返回的地址,或者同样地包括释放内存和释放缓冲区的文件名和程序行。然后,您可以按地址对结果文件进行排序,那些带有“ALLOCATE”消息但没有“FREE”消息的地址可能已经泄漏,或者至少在程序终止时没有被释放。这可能是一个耗时的实现和自动化工具是更好的,如果你有他们-但根据你的情况,你可能不得不这样做。 或者,你可能只想用垃圾收集器。博姆收藏家可能会为你工作-看看 http://www.hpl.hp.com/personal/Hans_Boehm/gc/ . 分享和享受。 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 4 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 4 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |