c/c++中assert()宏終止程序後,堆上動態分配的內存會不會被釋放?
01-09
如果不釋放不就內存泄漏了。
還有abort()和exit(),退出後釋放不?怎麼網上很難找到相關的探討。不想在退出之前先free()或delete,擔心可能會多此一舉。
你需要去讀任何一本《操作系統》教材。而不是去「網上找相關的探討」。
推薦「unix編程藝術」一書,對於系統編程的很多問題都有從unix角度的解釋,
進程死亡的時候內存、文件描述符等資源會被操作系統回收,所以不用擔心。(相比之下,線程的就不會,所以你經常會發現很多語言不支持殺死線程,就是因為擔心資源回收不幹凈)
大概可以類比為,人死了,做過的白日夢還要不要手動忘掉
一般而言assert是用來測試的,debug版本可以用,正式上線的版本不要用assert,assert失敗直接退出,操作系統來回收內存。
推薦閱讀:
※怎樣解決Qt發布程序體積過大的問題?
※0基礎自學c++到找到一份開發工作?
※c語言里malloc的最優實現方式是什麼?
※Qt沒有真正完美的無邊框解決方案嗎?
※知乎上看到一些人評價c++的exception很難用,想問一下大家寫c++時怎麼處理錯誤?