gpt4 book ai didi

c - free() 为什么不需要长度参数?

转载 作者:行者123 更新时间:2023-12-04 10:47:33 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
C programming : How does free know how much to free?



我突然想到这是怎么回事 free(myPtr)不需要长度参数?它如何知道要释放多少内存?

我只能猜测它会跟踪它为每个特定的起始地址分配了多少内存。

最佳答案

这是因为 malloc 保存了有关已分配块长度的信息,通常位于返回给程序的地址之前的位置。实现为 size_t 分配额外的存储空间,将大小放在那里,添加 sizeof(size_t),并将其作为 malloc 指针返回给您的情况并不少见。该标准不要求这种实现,因此,替代实现是可能的,例如基于哈希表。

关于c - free() 为什么不需要长度参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894018/

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