c语言中realloc的用法
时间: 2023-09-13 16:13:36 浏览: 64
在C语言中,realloc函数用于重新分配已经分配的内存块的大小。根据C语言的规定,传递给realloc的指针必须是先前通过malloc()、calloc()或realloc()分配的。如果mem_address为NULL,则realloc()的行为和malloc()相似,它会分配一个新的大小为newsize的内存块,并返回一个指向该内存块的指针。
下面是一个关于realloc函数用法的示例代码:
#include <stdio.h>
#include <stdlib.h>
#define N 10000
int main() {
int i;
int *pn = (int *)malloc(5*sizeof(int)); // 初始分配5个int大小的内存块
printf("%p\n",pn);
for(i = 0; i < 5; i++) {
pn[i] = i + 1; // 对分配的内存块进行赋值
}
printf("%d\n",sizeof(int));
int *pnn = (int *)realloc(pn, N*sizeof(int)); // 重新分配内存块大小为N*sizeof(int)
printf("%p\n",pnn);
for(i = 0; i < 5; i++) {
printf("%d ",pnn[i]); // 输出重新分配后的内存块中的值
}
printf("\n");
free(pnn); // 释放重新分配后的内存块
return 0;
}
在这个示例中,我们首先通过malloc()函数分配了一个大小为5*sizeof(int)的内存块,并对其进行了赋值。然后,我们使用realloc()函数重新分配了一个大小为N*sizeof(int)的内存块,并将原内存块中的内容复制到了新的内存块中。最后,我们输出了重新分配后的内存块中的值,并使用free()函数释放了内存块。
需要注意的是,如果realloc()函数无法成功分配新的内存块,它会返回NULL,并且原内存块保持不变。因此,在使用realloc()函数时,建议先将其返回的指针赋值给一个临时指针变量,以防分配失败造成原内存块的丢失。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [realloc() 用法详解](https://blog.csdn.net/modi000/article/details/115617903)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]