本文探讨了C++编程语言中new、new[]以及对应的delete、delete[]运算符在内存管理上的区别与正确使用方法。通过理解它们的不同,帮助开发者避免常见的内存泄漏问题。
编写代码示例来展示`new/delete`与`new[]/delete[]`在创建对象申请内存以及释放空间上的区别。
首先使用 `new` 和 `delete` 来分配单个对象的内存,并随后释放它:
```cpp
#include
class MyClass {
public:
int value;
};
int main() {
MyClass* obj = new MyClass(); // 使用 new 分配一个 MyCLass 对象的内存
obj->value = 10; // 初始化成员变量
std::cout << Value: << obj->value << std::endl;
delete obj; // 使用 delete 来释放这个对象占用的内存空间
}
```
接下来,使用 `new[]` 和 `delete[]` 分配多个相同类型的对象数组,并随后一次性释放它们:
```cpp
#include
class MyClass {
public:
int value;
};
int main() {
MyClass* objArray = new MyClass[5]; // 使用 new[] 分配一个包含五个 MyCLass 对象的数组
for (size_t i = 0; i < 5; ++i) {
objArray[i].value = static_cast(i + 1); // 初始化成员变量
std::cout << Value of element at index << i << : << objArray[i].value << std::endl;
}
delete[] objArray; // 使用 delete[] 来释放这个数组占用的所有内存空间
}
```
这段代码展示了使用 `new` 和 `delete` 分配和删除单个对象的内存,以及使用 `new[]` 和 `delete[]` 处理动态分配的对象数组。