构造函数中慎用memset

原创
小哥 2年前 (2023-05-24) 阅读数 39 #大杂烩

当我写一个小程序时,我会运行一个系统循环。我发现存在严重的内存泄漏,并且内存不断增长。

经过多次审核,最终确定了问题所在,代码结构大致如下:

struct myobj

{

myobj()

{

memset(this,0,sizeof(myobj));

}

int n;

//...其他成员

string s;

}

定义了一个具有许多类型成员的结构,但懒得逐个分配值。因此,在构造函数中memset函数。

问题就在这里,因为这个函数也会清除所有string成员的内存空间会影响对象的解构,从而导致内存泄漏。

因此,当对象具有复杂类型成员时,不要使用memset使用指针成员初始化时要小心!

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门