码迷,mamicode.com
首页 > 其他好文 > 详细

内存泄露

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

标签:使用   数据   c++   new   har   ar   

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

  char *a=new char[10];

  char *b="hey";

  strcpy(a,"hello");

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

 

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

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

  

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

内存泄露

标签:使用   数据   c++   new   har   ar   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!