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