1.區域性物件,生命週期:當前這個作用域。
2.全域性物件,生命週期:當前程式結束。
3.new在堆區的物件,生命週期:delete。可以出發建構函式與析構函式。
cperson* ps = new cperson;
delete ps;
ps = null;
4.臨時物件,生命週期:當前這一行。
cperson();
5.malloc建立物件時,是單純的分配空間與釋放空間,不觸發建構函式與析構函式。
cperson* ps = (cperson*)malloc(sizeof(cperson)); //分配空間
free(ps); //釋放空間
如何選擇使用哪種物件?
1.由使用者控制生命期,要new的物件。
2.程式從執行到結束一直存在。 全域性或static。
3.臨時用一下,區域性的。
C 之物件的new與delete
這裡單獨說一點對於類物件的new和delete中到底開闢的是哪段空間,釋放的是哪段空間。還是一樣舉個例子 class a a int main 構造器和析構器就不用說了,顯然構造器中的new是為str開闢了一段100位元組空間,析構器中delete釋放的也是為str的那100位元組大小的空間。那麼m...
C 之建立物件時的new與不new
c 在建立物件的時候可以採用兩種方式 例如類名為test test test 或者 test ptest new test 這兩種方法都可以例項化乙個物件,但是這兩種方法有很大的區別,區別在於物件內容所在的記憶體空間不同,眾所周知,記憶體的分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候...
C 建立物件new與不new區別
記憶體的分配方式有三種 1.從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static 變數。2.在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束後在將這些區域性變數的記憶體空間 在棧上分配記憶體空間效率很...