盡量不在C++中使用malloc和free,因?yàn)樗鼈兒蚽ew ,delete混用會導(dǎo)致錯誤發(fā)生概率大大增加。
string *stringarray1 =
static_cast<string*>(malloc(10 * sizeof(string)));
string *stringarray2 = new string[10];
第一句為stringarray1分配了容納10個string對象的空間,但是并沒有在內(nèi)存里創(chuàng)建這些對象,而第二句創(chuàng)建了一個含10個string對象的數(shù)組。
釋放stringarray1的指針,要free( stringarray1);stringarray=null;釋放stringarray2的指針,要用delete []stringarray2;
stringarray2=NULL;malloc和free不涉及對象的構(gòu)造和析構(gòu),只是簡單的分配內(nèi)存!
在c++程序里使用malloc和free沒有錯,只要保證用malloc得到的指針用free,或者用new得到的指針最后用delete來操作就可以了。千萬別
馬虎地把new和free或malloc和delete混起來用,那只會自找麻煩。