C++ 内存释放解析

class Test
{
	/*
	.	2.类对象中:
	.		2.1.对象成员变量的内存 随对象内存释放而释放
	.			如 对象成员变量:a, b, c
	.		2.2.对象成员变量指针指向的堆内存(new 出来的),需用 delete 在析构函数中释放 
	.			如 指针指向的堆内存:*b
	.	3.类对象内存:
	.		3.1.若类对象如下main 中 t1,则其对象内存存放于栈中
	.		3.2.若类对象如下main 中 t2,则其对象内存存放于堆中
	.		3.3.对象内存包括 a, b, c , 注:b指针变量指向的内存 不属于对象内存
	*/
private:
	int a = 1;
	int *b = new int(2);
	int c[5];

public:
	Test() {};
	~Test() { delete b; }
};

int main()
{
	/*
	.	1.函数中:
	.		1.1.函数中 栈变量的内存 随函数运行结束 由系统自动释放
	.			如 栈变量: t1, t2, a, b, c
	.		1.2.函数中 栈变量指针指向的堆内存(new 出来的),需用 delete 手动释放 
	.			如 栈变量指向的堆内存:*t2, *b
	*/
	Test t1;
	Test *t2 = new Test();

	int a = 1;
	int *b = new int(2);
	int c[5];
	c[0] = 1;

	delete t2, b;
}

猜你喜欢

转载自blog.csdn.net/weixin_39469127/article/details/81024257