C++程序内存泄漏都与哪些方面有关,该如何处理和避免
生活随笔
收集整理的這篇文章主要介紹了
C++程序内存泄漏都与哪些方面有关,该如何处理和避免
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
動態內存分配有幾種: 一個是用了malloc/free, new/delete 第二個使用了第三方的庫,庫里面的API使用了第一種方法,他們需要你來釋放空間,這個會在庫的說明文檔里有說明。 第三是程序遞歸,大量的程序遞歸和互相調用而不推出導致??臻g不斷擴大,而導致內存不足?第四是隱含的內存分配,比如使用vector等庫,他們提供數組范圍動態擴大。不過程序中不斷向數組添加元素,實際上也是在申請內存。 第五可能是系統調用。比如多線程程序,使用了消息機制之后,消息的發送方不斷發送消息,接收方來不及處理,導致系統的消息隊列溢出,同樣會內存不足。 第六可能是多線程。不斷申請新的線程,會導致線程空間不斷增多。每個線程有自己的獨立堆棧數據區,也是很大的內存開銷。 現在能想到的就這么多,你的這幾種都有可能。 辦法, 1使用調試運行。調試運行下,調試器會在崩潰前停下來。你可以看看崩潰前的運行信息,也許有助于判斷原因。 2使用一個插件,叫做vld。我個人在用,他能發現動態內存分配的內存泄漏現象,即上面的第一和第二種原因。VC6可用,英文的,外國人寫的,不好意思。http://www.codeproject.com/KB/applications/visualleakdetector.aspx
總結
以上是生活随笔為你收集整理的C++程序内存泄漏都与哪些方面有关,该如何处理和避免的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyMongo--非关系型数据库mong
- 下一篇: C++文件交互(txt、excel)