首页 > 其他 > 详细

内存泄露

时间:2014-07-02 20:44:34      阅读:300      评论:0      收藏:0      [点我收藏+]

  在C++中,如果用new在堆中分配了一块内存,没有对其进行释放,就会产生内存泄露。

  char *a=new char[10];

  char *b="hey";

  strcpy(a,"hello");

  此时如果让a指向其他地方,比如说a=b;那么原先a指向的10个字节的内存块就变成了不可访问的区域,造成内存泄露。

 

  还有一种情况。在类中,如果一个类的成员变量是个指针,并且在构造函数中使用new分配了内存,并在析构函数中调用delete释放了该内存。当你用该类的一个对象去初始化另一个对象,或者给另一个对象赋值时,都会调用拷贝构造函数,但此时是浅拷贝,因为他们的指针成员变量指向同一块内存,他们不是独立的,对该指针的指向数据的操作会影响到另一个对象,另外,析构的时候会过度释放,因为用new分配的内存被释放了2次,程序会崩溃。

  解决办法是重新写拷贝构造函数,重载=操作符。

  

内存泄露,布布扣,bubuko.com

内存泄露

原文:http://www.cnblogs.com/superzzh/p/3819219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!