先測試如下帶引數的建構函式:
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會呼...