您的位置:首页 > 编程语言 > C语言/C++

double freeing of freed memory

2017-05-15 13:12 489 查看

最近在客户那里改用klockwork分析出的问题,遇到了这个问题:Double freeing of freed memory may be in class 'DriverInfo'. copy constructor and operator= is not defined。

自己写了个例子

#include <iostream>

class MyData

{

 public:

 MyData()

 {

  myData = new int;

  printf("Created data: 0x%08X\n", myData);

 }

 ~MyData()

 {

  printf("Destroying data: 0x%08X\n", myData);

  delete myData;

 }

 private:

 int* myData;

};

int main(int argc, char* argv[])

{

 MyData test1;

 MyData test2;

 test2 = test1;

 MyData test3(test1);

}

----------------------------------------------------------------------------------------------------------------

输出结果:

Created data: 0x00551d30

Created data: 0x00551d70

Destroying data: 0x00551D30

Destroying data: 0x00551D30

挂了。。。

这里有内存泄漏(0x00551d70)和多次释放资源。这个问题本质上应该是深拷贝和浅拷贝的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++
相关文章推荐