我正在尝试完成一项大学作业,评分标准规定了5%的内存管理 - 具体指没有内存泄漏。
据我所知,在简单的C程序中,内存泄漏只会由程序中已被放弃的指针引起 - 即调用malloc / calloc等函数但没有相应的free
。
我的问题分为三个部分:
- 在Solaris和OSX上,证明你没有泄漏任何内存的最简单方法是什么?
- XCode有没有工具来帮助确定内存泄漏?
- 操作系统是否会在进程结束时释放所有先前分配的内存?
我正在尝试完成一项大学作业,评分标准规定了5%的内存管理 - 具体指没有内存泄漏。
据我所知,在简单的C程序中,内存泄漏只会由程序中已被放弃的指针引起 - 即调用malloc / calloc等函数但没有相应的free
。
我的问题分为三个部分:
Valgrind is your friend.
brew install valgrind
警告您需要 OS X Mavericks 或更早版本
. 这是 OSX 10.9. 当前版本为 10.10.4. - Nick Desaulniers针对Mac OS的问题和一个需要避免的例子(为您节省半小时)。
Mac OS没有Valgrind或dmalloc。此外,在Sierra中安装Valgrind时,Valgrind存在一些兼容性问题。
有一个名为“leaks”的实用程序,我通过以下方式使其运行:
Original Answer 翻译成“最初的回答”
leaks -atExit --/Contents/Developer/usr/lib/libLeaksAtExit.dylib ./a.out