📅  最后修改于: 2023-12-03 15:00:11.328000             🧑  作者: Mango
在C/C++中,动态分配内存是一项常见的任务。动态分配内存意味着我们需要在程序运行时决定需要多少内存,而不是在编译时就分配。本文将介绍如何在C/C++中动态分配内存并调整和删除它。
在C/C++中,动态分配内存使用 new
和 malloc
函数。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++中,可以使用 delete
和 free
函数来删除动态分配的内存。
delete num; // 删除分配的整数
delete[] arr; // 删除分配的整数数组
free(num); // 删除分配的整数
free(arr); // 删除分配的整数数组
在删除内存后,为了避免产生空悬指针,建议将指针设置为 nullptr
。
num = nullptr;
arr = nullptr;
动态分配内存是一个常见的任务,但也很容易导致内存泄漏和其他问题。本文介绍了如何在C/C++中动态分配内存并调整和删除它。记住,在分配内存后,必须在使用完后及时释放它。