C 中使用new和malloc注意事項

2021-09-25 05:53:34 字數 766 閱讀 7646

先測試如下帶引數的建構函式:

class test

private:

int _num;

};

可以看到其建構函式帶乙個引數,並且在前導中執行私有變數_num的初始化操作,函式體中列印提示資訊。下面時主函式。

int main()

程式執行結果如下。

created test with 10

請按任意鍵繼續. . .

可以看出其執行了建構函式及前導。下面用malloc進行測試。

int main()

程式執行結果:

請按任意鍵繼續. . .
沒有任何提示資訊輸出,說明建構函式並沒有被執行。

綜上,在c++中就盡量不要用malloc了,之所以說在c++中也常使用malloc,那是在一些特定情況下。

比如下面這個類。

class test

private:

int _num;

};

由於並未在建構函式裡做任何實際操作(除了列印點提示資訊),所以如下兩種方式皆可行。

int main()

當然唯一區別就是前者列印了提示資訊。

動態分配的空間來自堆,指標指向堆空間的乙個位址,而指標本身作為區域性變數在棧裡。

C 開發DLL中使用new和delete注意事項

報錯情況 1,在 dll 中用 new 來建立宿主程式中的物件,然後把這個物件指標儲存到宿主程式,當 dll 被解除安裝後,凡是涉及到這個指標的呼叫都會報錯,包括 delete 這個指標也會有錯。2,在dll中new出乙個物件,然後在不需要使用時進行delete,結果會報如下錯誤 分析原因 因為ne...

malloc函式 new和malloc的區別

1 申請的記憶體所在位置 new操作符從自由儲存區上為物件動態分配記憶體空間,而malloc函式從堆上動態分配記憶體。自由儲存區是c 基於new操作符的乙個抽象概念,凡是通過new操作符進行記憶體申請,該記憶體即為自由儲存區。而堆是作業系統中的術語,是作業系統所維護的一塊特殊記憶體,用於程式的記憶體...

C 中new和malloc的區別

1 new是c 中的操作符,malloc是c中的乙個函式.new是個操作符,和什麼 有一樣的地位,malloc是個分配記憶體的函式,供你呼叫的.正因為如此,new是保留字,不需要標頭檔案支援,malloc需要標頭檔案庫函式支援.2 new不止是分配記憶體,而且會呼叫類的建構函式,同理delete會呼...