C++realloc
时间: 2024-12-29 11:17:59 浏览: 41
### C++ 中 `realloc` 函数的用法
在C++中,`realloc`函数用于调整先前分配内存区域的大小。此操作不会初始化新分配的空间;如果新的空间大于旧的空间,则超出部分未定义。当所需的新尺寸小于当前尺寸时,`realloc`会缩小内存块并可能释放多余的部分。
#### 基本语法
```cpp
void* realloc(void *ptr, size_t new_size);
```
- 参数`ptr`是指向之前通过`malloc`, `calloc` 或者 `realloc`获得的内存块指针。
- 参数`new_size`是以字节表示的新内存块大小。
返回值是一个指向重新分配(可能是移动过)后的内存块起始地址的指针,类型为`void*`。如果请求失败则返回NULL,并且原始内存保持不变[^1]。
#### 使用示例
下面的例子展示了如何使用`realloc`来动态增加数组容量:
```cpp
#include <iostream>
using namespace std;
int main(){
int n = 5;
int *array = (int*) malloc(n * sizeof(int));
// 初始化原数组
for(int i=0;i<n;++i){
array[i]=i*i;
}
cout << "Original Array:" ;
for(int i=0;i<n;++i){
cout<< " "<< array[i];
}
// 扩展数组到10个元素
n = 10;
array=(int *)realloc(array,n*sizeof(int));
// 继续填充新增加的位置
for(int i=5;i<10;++i){
array[i]=(i+1)*(i+1);
}
cout<<"\nExpanded Array:";
for(int i=0;i<n;++i){
cout<<" "<<array[i];
}
free(array);
}
```
需要注意的是,在实际应用中应当检查`realloc`的结果是否成功,即它不等于NULL,再继续后续的操作。此外,由于`realloc`可能会改变原来的指针位置,因此应该始终保存其返回值而不是假设原有指针仍然有效[^2]。
阅读全文
相关推荐


















