在 C 语言中,realloc 函数用于重新分配内存块的大小
在 C 语言中,realloc 函数用于重新分配内存块的大小。它可以用来扩大或缩小之前通过 malloc、calloc 或 realloc 分配的内存块。realloc 是一个非常有用的函数,因为它允许程序在运行时动态调整内存分配的大小。
realloc 函数的语法
c
void *realloc(void *ptr, size_t
ptr:指向之前分配的内存块的指针。如果 ptr 是 NULL,realloc 的行为类似于 malloc。
size:新的内存块的大小(以字节为单位)。
realloc 的行为
扩大内存块:如果新的大小大于旧的大小,realloc 会尝试扩展当前内存块。如果当前内存块之后没有足够的空间来扩展,realloc 会在堆中寻找一个新的足够大的内存块,并将旧内存块的内容复制到新内存块中。旧内存块会被释放。
缩小内存块:如果新的大小小于旧的大小,realloc 会截断当前内存块,多余的部分会被丢弃。
失败情况:如果 realloc 无法分配请求的内存,它会返回 NULL,并且原始的内存块保持不变。
使用示例
c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
int n = 5;
// 分配 n 个整数的内存空间
ptr = (int *)malloc(n * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
// 初始化分配的内存
for (int