📜  c、c++中如何调整和删除内存(1)

📅  最后修改于: 2023-12-03 15:00:11.328000             🧑  作者: Mango

在C/C++中如何调整和删除内存

在C/C++中,动态分配内存是一项常见的任务。动态分配内存意味着我们需要在程序运行时决定需要多少内存,而不是在编译时就分配。本文将介绍如何在C/C++中动态分配内存并调整和删除它。

动态分配内存

在C/C++中,动态分配内存使用 newmalloc 函数。new 操作符用于分配内存并调用构造函数(仅适用于对象),malloc 函数只分配内存空间。举个例子:

int* num = new int; // 分配一个整数
int* arr = new int[10]; // 分配一个包含10个整数的数组
int* num = (int*)malloc(sizeof(int)); // 分配一个整数
int* arr = (int*)malloc(10 * sizeof(int)); // 分配一个包含10个整数的数组

在使用完动态分配的内存之后,我们需要及时释放这段内存以避免内存泄漏。接下来,我们将了解如何调整和删除内存。

调整内存大小

有时候我们需要调整已分配的内存大小以适应变化的需求。在C/C++中,可以使用 realloc 函数来实现这一点。

arr = (int*)realloc(arr, 20 * sizeof(int)); // 将 arr 数组大小扩展为包含20个整数的数组

realloc 函数的第一个参数是需要调整大小的内存块的指针,第二个参数是新的内存大小。

需要注意的是,realloc 函数可能会将原始内存块的内容复制到一个新的内存块中。因此,建议在调整内存块大小之前备份内存块中的数据。

删除内存

释放动态分配的内存非常重要。在C/C++中,可以使用 deletefree 函数来删除动态分配的内存。

delete num; // 删除分配的整数
delete[] arr; // 删除分配的整数数组
free(num); // 删除分配的整数
free(arr); // 删除分配的整数数组

在删除内存后,为了避免产生空悬指针,建议将指针设置为 nullptr

num = nullptr;
arr = nullptr;
总结

动态分配内存是一个常见的任务,但也很容易导致内存泄漏和其他问题。本文介绍了如何在C/C++中动态分配内存并调整和删除它。记住,在分配内存后,必须在使用完后及时释放它。