c++面向对象高级编程 学习三 堆、栈和内存泄漏
生活随笔
收集整理的這篇文章主要介紹了
c++面向对象高级编程 学习三 堆、栈和内存泄漏
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
棧,是存在于某作用域的一塊內(nèi)存空間。在函數(shù)體內(nèi)聲明的任何變量,其所使用的內(nèi)存空間均來自于棧。
堆,是指由操作系統(tǒng)提供的一塊global內(nèi)存空間,程序可動態(tài)分配獲得若干內(nèi)存空間塊。
new操作符生成的對象所占用的內(nèi)存空間即是從堆中動態(tài)分配所得。
c1所占用的空間來自棧,c2來自堆。
c1在作用域結(jié)束之后消失,內(nèi)存會被自動清理。
c2是heap object,其生命在被delete時結(jié)束,若其作用域結(jié)束,還沒有被delete,則c2所指向的heap object依然存在,但c2的生命結(jié)束了,作用域之外不再有c2,也就沒機會delete c2了,因此會產(chǎn)生內(nèi)存泄漏
c3是static object,在作用域結(jié)束之后仍然存在,直到整個程序結(jié)束。
new操作:先分配內(nèi)存再調(diào)用構(gòu)造函數(shù)
delete操作:先調(diào)用析構(gòu)函數(shù),再釋放內(nèi)存
array new 一定要搭配 array delete
總結(jié)
以上是生活随笔為你收集整理的c++面向对象高级编程 学习三 堆、栈和内存泄漏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020年世界足球日是什么时候
- 下一篇: C++STL与泛型编程(4)OOP(面向