當前位置:博客首頁>>編程基礎(chǔ) >> 閱讀正文

【C++】關(guān)于C++的堆棧及內(nèi)存泄漏

作者: 鄭曉 分類: 編程基礎(chǔ) 發(fā)布于: 2012-10-31 23:02 瀏覽:7,493 評論(4)


先來看一下指針,指針在c++中的功能是非常強大的,但它比較危險,因為指針允許執(zhí)行對計算機不友好的操作,例如,可以使用未經(jīng)初始化操作的指針來訪問內(nèi)存或者是試圖去釋放同一個內(nèi)存塊兩次。初學者在通過學習實踐來習慣指針表示法和指針概念之前,指針是非常容易引起迷惑的。

在C++中,如果使用了new關(guān)鍵字(C++里好像叫操作符)在自由存儲空間或堆上創(chuàng)建變量之后 而沒有使用delete操作符的話,將會發(fā)生什么情況呢?

如果沒有調(diào)用delete操作符,則即使包含指針的內(nèi)存由于作用域規(guī)則和對象生命周期的原因而被釋放,在自由存儲空間上動態(tài)分配的變量或結(jié)構(gòu)也將會繼續(xù)存在。實際上,由于指向這些內(nèi)存的指針失效,程序?qū)o法訪問自由存儲空間中的結(jié)構(gòu),這種原因?qū)е聝?nèi)存泄漏。

被泄漏的內(nèi)存將在程序的整個生命周期內(nèi)都不可使用,這些內(nèi)存被分配出去,但無法收回。在一些極特殊的情況下,這種內(nèi)存泄漏的情況可能會非常地嚴重,以致于應(yīng)用程序的可用內(nèi)存被耗盡而導致程序崩潰。另外,這種內(nèi)存泄漏現(xiàn)象還會給一些操作系統(tǒng)或在相同的內(nèi)存空間中運行的應(yīng)用程序帶來負面影響,甚至同樣崩潰。

不管是多牛的程序員還是軟件公司做出的軟件,都有可能出現(xiàn)內(nèi)存泄漏。養(yǎng)成一種好的習慣會盡可能的減少內(nèi)存泄漏問題的發(fā)生,所以在使用自由存儲空間上動態(tài)地分配內(nèi)存后要記得及時釋放它,對于new與delete操作符來說,要盡量注意同時使用。

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。

本文永久鏈接: http://yjfs.org.cn/about-c-stack-and-memory-leaks.html

【C++】關(guān)于C++的堆棧及內(nèi)存泄漏:目前有4 條留言

用戶評論頭像 蔡佳博客發(fā)表于 2012年11月09日 20:38[回復]

好幾天不更新了。干嘛呢,,

    用戶評論頭像 鄭曉發(fā)表于 2012年11月09日 22:36[回復]

    正準備更新呢。。。 ??

用戶評論頭像 happmaoo發(fā)表于 2012年11月03日 18:59[回復]

c++不熟悉,c#懂一點,現(xiàn)在學java,不去折騰了

    用戶評論頭像 鄭曉發(fā)表于 2012年11月03日 19:01[回復]

    我也是只會一點兒php,C以前上學時沒怎么認真學,現(xiàn)在感覺好難啊。。

發(fā)表評論

change vcode