gpt4 book ai didi

c - C标准库中realloc是如何实现的?

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

我找不到 realloc 函数的任何源代码,它似乎违反了 C 的基本规则:它不需要内存的长度来重新分配。

  1. 如何在不知道原始内存长度的情况下重新分配内存?

  2. 我怎样才能自己实现这个功能?

最佳答案

至少有 3 个考虑因素使得很难或不可能完全在“用户态”C 中实现 realloc

  1. mallocfree 使用的相同数据结构进行交互。

  2. mallocrealloc 需要返回适合任何对象对齐的存储。在 C11 之前,我们还没有所有必要的宏来 100% 可移植地计算此对齐。

  3. mallocrealloc 不能在可移植的 C 中实现,这是一个棘手的语言律师理由。我可能在这里混淆了术语,但问题是在函数计算出它将返回的指针值之后,它无法放弃与存储相关联的“有效类型”。因此,即使您可以使您的版本正常工作,它也事实上 是非标准的。

关于c - C标准库中realloc是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57438007/

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