C++ 栈和堆上建立对象的区别
生活随笔
收集整理的這篇文章主要介紹了
C++ 栈和堆上建立对象的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在C++中類的對象建立分為兩種,一種是靜態建立,如A a;另一種是動態建立,如A* p=new A(),Ap=(A)malloc();靜態建立一個類對象,是由編譯器為對象在棧空間中分配內存,通過直接移動棧頂指針挪出適當的空間,然后在這片內存空間上調用構造函數形成一個棧對象。動態建立類對象,是使用new運算符將對象建立在堆空間中,在棧中只保留了指向該對象的指針。棧是由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值,對象的引用地址等。其操作方式類似于數據結構中的棧,通常都是被調用時處于存儲空間中,調用完畢立即釋放。堆中通常保存程序運行時動態創建的對象,C++堆中存放的對象需要由程序員分配釋放,它存在程序運行的整個生命期,直到程序結束由OS釋放。而在java中通常類的對象都分配在堆中,對象的回收由虛擬機的GC垃圾回收機制決定。
引用文章:C++中棧和堆上建立對象的區別
總結
以上是生活随笔為你收集整理的C++ 栈和堆上建立对象的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 创建对象时带括号和不带括号的区别
- 下一篇: python 如何组织文件 文件夹架构