看代码:
#include<stdio.h>
#include<stdlib.h>
void main()
{
int *p;
p = malloc(6);
p = realloc(p, 10);
if (p == NULL)
{
printf("error");
exit(1);
}
}
以这个代码为例,假设总内存为 10 个字节,其中 2 个字节被声明为 int 类型的指针使用,另外 6 个字节由 malloc 函数占用,其余 2 个字节被其他程序占用,现在当我运行 realloc 函数时为了扩展指针指向的内存,它将在内存中搜索 10 个字节,当它不可用时,它从堆区域分配 10 个字节的内存并复制 malloc 的内容并将其粘贴到堆区域的新分配内存区域中,并且然后删除存储在malloc中的内存对吗?
realloc() 是否因为内存不可用而返回 NULL 指针?没有权利!?它确实进入堆区域进行内存分配,对吗?它不返回 NULL 指针对吗?