我正在尝试完成大学任务,并且标记标准为内存管理指定了5% - 专门用于没有内存泄漏。在C程序中查找内存泄漏的最佳方法
据我所知,简单的C程序中的内存泄漏只是由程序放弃的指针引起的 - 即malloc/calloc/etc调用永远不会有相应的free
。
我的问题是在3个部分:
- 请告诉我在Solaris 和OSX最简单的方法来“证明”你有没有 泄露任何内存?
- 是否有XCode有 任何工具来帮助确定内存 泄漏?
- 一旦 进程结束,操作系统 是否会释放之前在c程序中分配的所有以前分配的内存 ?
我正在尝试完成大学任务,并且标记标准为内存管理指定了5% - 专门用于没有内存泄漏。在C程序中查找内存泄漏的最佳方法
据我所知,简单的C程序中的内存泄漏只是由程序放弃的指针引起的 - 即malloc/calloc/etc调用永远不会有相应的free
。
我的问题是在3个部分:
一般来说,学习如何在不使用内存调试器等工具的情况下学习如何避免泄漏是一个好主意(早期) - 特别是对于简单的程序。这是痛苦的,但是:当涉及到建设什么不平凡的你要开始学习如何使用更先进的调试工具
Nr。 1听起来更复杂。这也意味着你的fopen需要一个fclose,而createFoo()需要destroyFoo()。 – Mel 2011-05-17 22:30:31
不是你的问题的答案,但值得一提的是:你的教师对memleaks的想法可能与现实世界中的问题不同。有限数量的未实现的分配(独立于程序进程的任何数据)并不是真正的内存泄漏,尽管被valgrint之类的工具捕获,而在数据不再使用之后依然依赖于数据的分配,只能被清理干净在程序退出时,尽管事实上没有工具可以检测到它们,但它们都是真实的泄漏。 – 2011-05-17 23:01:21
您可以尝试删除,但它只适用于Windows( – MastAvalons 2012-02-06 21:21:07