gpt4 book ai didi

我可以假设以较小的大小调用 realloc 将释放剩余部分吗?

转载 作者:太空狗 更新时间:2023-10-29 16:24:02 25 4
gpt4 key购买 nike

<分区>

让我们考虑一下这段非常短的代码:

#include <stdlib.h>

int main()
{
char* a = malloc(20000);
char* b = realloc(a, 5);

free(b);
return 0;
}

阅读 realloc 的手册页后,我不确定第二行是否会导致释放 19995 个额外字节。引用手册页:realloc() 函数将 ptr 指向的内存块的大小更改为 size bytes。,但是根据该定义,我可以确定其余部分将被释放吗?

我的意思是,b 指向的 block 肯定包含 5 个空闲字节,所以对于一个懒惰的遵从分配器来说,不为 realloc 行做任何事情就足够了吗?

注意:我使用的分配器似乎释放了 19 995 个额外字节,如 valgrind 在注释掉 free(b) 行时所示:

==4457== HEAP SUMMARY:
==4457== in use at exit: 5 bytes in 1 blocks
==4457== total heap usage: 2 allocs, 1 frees, 20,005 bytes allocated

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