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