【发布时间】:2011-08-27 14:59:27
【问题描述】:
我正在尝试完成一项大学作业,评分标准指定 5% 用于内存管理 - 特别是没有内存泄漏。
据我了解,简单 C 程序中的内存泄漏仅由程序放弃的指针引起 - 即 malloc/calloc/etc 调用,它们永远不会有相应的free。
我的问题分为三个部分:
- Solaris 上最简单的方法是什么 和 OSX 来“证明”你没有 泄露任何内存?
- XCode 是否有 任何有助于确定记忆的工具 泄漏?
- 操作系统是否 释放所有先前分配的 c程序中的内存一旦 进程结束?
【问题讨论】:
-
编号1比听起来更复杂。这也意味着你的 fopen 需要一个 fclose,你的 createFoo() 需要一个 destroyFoo()。
-
不是您问题的答案,但值得一提的是:您的讲师对 memleaks 的看法可能与现实世界中重要的不同。尽管被 valgrint 等工具捕获,但有限数量的未释放分配(独立于程序处理的任何数据)并不是真正的内存泄漏,而数据相关的分配在数据不再被使用后仍然存在,并且只会被清理在程序退出时,是真正的泄漏,尽管没有工具可以检测到它们。
-
你可以试试 deleaker 但它只适用于 windows(
标签: c macos pointers memory-management