1 c memory memory-management heap-memory realloc
通常,realloc() 用于重新分配先前分配的指针:
int *DynamicArray = malloc(sizeof(int)*SomeArbitraryValue);
// Some rando code where DynamicArray is used
DynamicArray = realloc(DynamicArray, sizeof(int)*SomeOtherArbitraryValue)
Run Code Online (Sandbox Code Playgroud)
但是realloc()可以用来直接分配内存吗?如在
int *DynamicArray = realloc(/*...*/);
Run Code Online (Sandbox Code Playgroud)
realloc() 可以处理非预分配指针吗?
小智 5
是的,只需传递NULL到第一个参数即可。
的联机帮助页realloc(3)说...
realloc()函数将ptr指向的内存块的大小更改为size字节。从区域开始到新旧尺寸的最小值的范围内,内容将保持不变。如果新的大小大于旧的大小,则添加的内存将不会被初始化。如果 ptr 为 NULL,则对于所有 size 值,调用相当于 malloc(size);如果 size 等于 0,并且 ptr 不为 NULL,则调用相当于 free(ptr)。除非 ptr 为 NULL,否则它必须是由之前对 malloc()、calloc() 或 realloc() 的调用返回的。如果指向的区域被移动,则完成 free(ptr)。
| 归档时间: |
|
| 查看次数: |
920 次 |
| 最近记录: |