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的内存空间,这样才不会有内存泄漏。

 

posted on 2018-08-06 15:53  阿飞、book  阅读(82)  评论(0)    收藏  举报

导航