可能重复:
Malloc and Realloc relation, How does it handle when the required space is not available in memory
#include<stdio.h>
#include<stdlib.h>
void main()
{
int *p;
p = malloc(6);
p = realloc(p, 10);
if (p == NULL)
{
printf("error"); // when does p point to null consider i have enough space in prgrm
//memory area but not in memory where realloc is trying to search
//for the memory, I dont know how to explain that try to undrstnd
exit(1);
}
}
以代码为例,假设总内存为10个字节,通过malloc函数指定类型为int和ohter 6字节的指针使用2个字节,其余2个字节被其他程序占用,现在当我运行realloc函数来扩展指针指向的内存,它将在内存中搜索10个字节,当它不可用时,它从堆区域分配10个字节的内存并复制malloc的内容并将其粘贴到新分配的内存区域中。堆区域然后删除存储在malloc中的内存吧?
realloc()是否返回NULL指针,因为内存不可用?没有权利!?它确实去堆区域进行内存分配吗?它没有返回NULL指针吗?
听我说:| 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
将此视为内存块:假设malloc()func使用01到06,07和08是空闲的,最后2个块i,e 09和10正在被其他程序的内存使用。现在,当我调用realloc(p,10)时,我需要10个字节,但只有2个空闲字节,那么realloc的作用是什么?返回一个NULL指针或从堆区域分配内存,并将01到06块内存的内容复制到堆区域中的那个内存,请告诉我。