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