2
A
回答
6
在Linux上至少,在C庫不只是因爲你叫delete
內存釋放回操作系統。它將內存放在你的進程中的「空閒列表」中。因此,如果您使用top
或cat /proc/XXX/status
等命令來測量虛擬內存使用量,則會看到流程中的所有內容(包括該空閒列表)的大小。
當您的free
或delete
爲「大」對象時,C庫只會將內存釋放回系統。 「大」的定義是128K字節。
我懷疑Windows,Mac等工作類似,但我不知道肯定。
所以你的問題的簡短答案是「不,不一定」。
2
根據你的班級實際包含和做什麼,即使你的班級沒有泄漏,你描述的內容也可能發生。
一些標準庫實現從內存池中分配類std::string
。
您應該使用像valgrind這樣的實際泄漏檢查器來代替您的測試運行。
相關問題
- 1. Linux堆碎片
- 2. 堆碎片
- 3. 託管堆碎片
- 4. Android 2.2.1,2.3,2.0中的碎片。這可能嗎?
- 5. 處理大字符串,這是大對象堆碎片?
- 6. Android堆棧碎片視圖
- 7. 衡量(Android)堆碎片?
- 8. 活動堆棧或碎片?
- 9. 在交易中替換碎片時的碎片堆棧錯誤?
- 10. 這是調用碎片的正確方法嗎?
- 11. Android碎片 - 如果已經存在,則從碎片堆棧中移除碎片
- 12. 這是內存碎片嗎? (視覺工作室和MinGW)
- 13. 像GTA IV這樣的遊戲不會碎片堆?
- 14. Android的碎片堆棧中的問題
- 15. Android的碎片堆棧中的問題
- 16. 診斷Mac OS X上的堆碎片?
- 17. 如何管理堆棧中的碎片?
- 18. c#中的堆碎片整理?
- 19. 64位土地中的堆碎片
- 20. 使用ViewPager碎片時,Animate Toolbar標誌/標題發生變化
- 21. 在這種情況下發生堆碎片?
- 22. 彈出後端堆棧時,碎片會被破壞嗎?
- 23. 標籤內的碎片
- 24. IP標誌的不碎片位在哪裏?
- 25. Android Fragments Backstack:它是一堆碎片還是交易?
- 26. 什麼是碎片
- 27. 安卓位圖,回收和堆碎片
- 28. 堆分離解決內存碎片
- 29. 檢測到堆棧碎片。 C編程
- 30. RegEx,StringBuilder和大對象堆碎片
什麼操作系統?你怎麼知道你的「程序使用了大約500kb」? – Nemo