拷贝构造函数进行创建对象的时候假如定义一个指针,对象t1中的指针P指向对象t2中的指针p指向同一块内存空间,创建对象的时候先创建t1,后创建t2,t1和t2的指针p指向同一块内存,析构的时候先析构t2,在析构t1,析构t2的时候已经把p所指的内存空间释放了,析构t1的时候p就没有指向内存空间了所以出现内存泄漏,具体代码如下: .h文件
#ifndef STU_H
#define STU_H
class stu
{
public:
//stu();
int *p;
int age;
int no;
stu();
~stu();
stu(stu &r);//拷贝构造函数,给成员变量赋值
};
#endif // STU_H
.cpp文件
#include "stu.h"stu::stu(){
}
stu::stu(stu &r){
// this->p=r.p;}
}
stu::~stu(){
free(this->p);//此处释放的时候会出现内存泄漏,this->p=NULL;}
main.c文件
#include <iostream>#include"stu.h"using namespace std;void f1(){
stu st1;st1.age=100;st1.no=100;stu st2(st1);cout<<st2.age<<endl;cout<<st2.no<<endl;}
void f2(){
stu a;a.p=(int *)malloc(sizeof(int));stu b(a);}
int main(int argc, char *argv[]){
// f1();cout << "Hello World!" << endl;return 0;}