malloc和new
在结构体中包含string类型时:
eg.
struct stuTest
{
string str;
}
stuTest* q = (stuTest*)mallco(sizeof(stuTest)); //(1)
stuTest* p = new stuTest(); //(2)
如果使用(1)中的方法创建对象,当我们给结构体中的str赋值后 ,在释放对象q之后,依然会有内存泄漏。内存泄漏的大小为16的倍数个字节。
使用(2)中的方法创建对象,在创建对象的同时会调用string的构造函数,这样在给p中的str赋值后,当释放p的内存空间时,也会调用string的析构函数,从而释放str的内存空间,这样才不会有内存泄漏。
浙公网安备 33010602011771号