关于堆区内存重复释放问题

#include<iostream>
using namespace std;

// 赋值运算符重载

class Person
{
public:
	Person(int age)
	{
		m_Age = new int (age);
	}

	~Person()  // 手动释放内存
	{
		if (m_Age != NULL)
		{
			delete m_Age;
			m_Age = NULL;
		}
	}

	
	int *m_Age;
};

void test01()
{
	Person p1(18);

	Person p2(20);

	p2 = p1;  // 赋值运算操作


	cout << "p1的年龄为:" << *p1.m_Age << endl;

	cout << "p2的年龄为:" << *p2.m_Age << endl;

}

int main()	//注意一个项目中main函数不能重名
{
	test01();



	system("pause");

	return 0;

}

由于浅拷贝,使得两个对象的m_Age指针指向同一块内存,由于是手动在析构函数中释放内存,使得堆区内存重复释放而报错。

发布了103 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44684139/article/details/104271503