gpt4 book ai didi

c - 内存分配查找

转载 作者:行者123 更新时间:2023-11-30 15:51:36 25 4
gpt4 key购买 nike

我分配了内存:

int *p = (int *) malloc(sizeof(int));

然后我打字:

char *new = (char *)p;

我取消分配它:

free(new);

1) 当字符有 1 个字节的空间时,将释放多少内存?2)内存管理器(在嵌入式系统中)应该采用什么内部机制来跟踪已分配的内存和已释放的内存? (不允许 bool 值)

最佳答案

当您调用malloc(或其兄弟之一)时,分配的内存大小将作为“有关此分配的信息”的一部分存储(info_block) 。 malloc 不知道你传入的是 sizeof(int)、常量 4 还是 sizeof(short)*2 code> 或您可能给它的任何其他内容[实际上,它很可能将分配扩展到 16 字节 - 并且此大小存储为分配的一部分。

当您稍后调用free时,它会“找到”info_block,然后它就知道要释放的大小。因此,对指针进行什么强制转换或其他操作并不重要 - 只要内部的指针具有相同的值即可。

关于c - 内存分配查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14977755/

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