複習 C 之物件種類,new與malloc

2021-09-12 20:51:09 字數 451 閱讀 1830

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.在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束後在將這些區域性變數的記憶體空間 在棧上分配記憶體空間效率很...