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