我正在嘗試完成大學任務,並且標記標準爲內存管理指定了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