1.2 new & delete
时间: 2024-02-27 08:51:23 浏览: 23
new和delete是C++中用于动态内存分配和释放的关键字,它们可以让我们在程序运行时动态地分配和释放内存。
new操作符:
new操作符用于在堆上分配内存空间。它的语法如下:
```
new 数据类型;
```
或者
```
new 数据类型(初始化参数);
```
当我们使用new操作符时,它会在堆上分配一块内存空间,并返回该内存空间的首地址。同时,如果我们使用第二种语法,可以在分配内存空间的同时,调用对象的构造函数对对象进行初始化。
delete操作符:
delete操作符用于释放new操作符分配的内存空间。它的语法如下:
```
delete 指针;
```
当我们使用delete操作符时,它会释放指针所指向的内存空间,并调用对象的析构函数释放对象占用的资源。
以下是一个简单的示例代码,展示了如何使用new和delete操作符:
```
#include <iostream>
using namespace std;
class Person {
public:
Person(const char* name, int age) {
this->name = name;
this->age = age;
cout << "Person created." << endl;
}
~Person() {
cout << "Person destroyed." << endl;
}
void display() {
cout << "Name: " << name << ", Age: " << age << endl;
}
private:
string name;
int age;
};
int main() {
// 使用new操作符动态分配内存空间
Person* p = new Person("Tom", 20);
// 使用指针访问对象
p->display();
// 使用delete操作符释放内存空间
delete p;
p = nullptr;
return 0;
}
```
在这个示例中,我们使用new操作符动态分配了一个Person对象的内存空间,并返回对象的地址给指针p。然后,我们使用指针访问对象并执行display()方法。最后,我们使用delete操作符释放对象占用的内存空间,并将指针p置为nullptr,避免野指针的问题。