gpt4 book ai didi

c - Malloc 和 Realloc 的关系,当所需空间在内存中不可用时如何处理

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:23 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
realloc and malloc functions

#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个字节,其中2个字节用于int类型指针的声明,另外6个字节由malloc函数占用,其余2个字节被其他程序占用,现在当我运行 realloc 函数扩展指针指向的内存,它会在内存中搜索 10 个字节,当它不可用时,它从堆区域分配 10 个字节的内存并复制 malloc 的内容并将其粘贴到新分配的内存区域中堆区然后删除malloc存储的内存对吗?

realloc() 是否因为内存不可用而返回 NULL 指针?无权利!?它确实进入堆区域进行内存分配,对吗?它不会返回 NULL 指针吗?

听我说:| 01 | 02 | 03 | 04 | 05 | 06 | 07 |08 |09 | 10 |

将其视为内存块:假设 01 到 06 已被 malloc() func 使用,07 和 08 是空闲的,最后 2 个 block ,即 09 和 10 正在被其他程序的内存使用。现在,当我调用 realloc(p,10) 时,我需要 10 个字节,但只有 2 个空闲字节,那么 realloc 做了什么?返回一个NULL指针或从堆区分配内存并将01到06 block 内存的内容复制到堆区的那 block 内存中,请告诉我。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com