尽量不在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混起来用,那只会自找麻烦。