对象内部申请的堆空间,由对象内部回收
#include<iostream>
using namespace std;
class Car{
public:
int m_price;
Car() {
m_price = 0;
cout << "Car::Car()" << endl;
}
~Car() {
cout << "Car::~Car()" << endl;
}
};
class Person{
private:
int m_age;
Car *m_car;
public:
//用来做一些初始化的工作
Person() {
m_age = 0;
m_car = new Car();//初始化指针,指向Car对象
cout << "Person::Person()" << endl;
}
//用来做一些内存清理的工作
~Person() {
delete m_car;//回收空间
cout << "Person::~Person()" << endl;
}
};
int main() {
//【内存泄漏:该释放的内存没有得到释放】
{
Person person;
}
getchar();
return 0;
}
图示:其中,假设Person p和Person *p = new Person()定义在函数内部
- 例子一
- 例子二
- 例子三
- 例子四