我找不到该realloc函数的任何源代码,而且似乎破坏了C的基本规则:它不需要花很长时间重新分配内存。
在不知道原始内存长度的情况下如何重新分配内存?
我如何自己实现此功能?
至少有 3 个考虑因素使得realloc完全在“用户区”C 中实现变得困难或不可能。
malloc与使用的相同数据结构进行交互free。
malloc并realloc需要返回与任何对象适当对齐的存储。在 C11 之前,我们还没有所有必要的宏来 100% 可移植地计算这种对齐方式。
有一个棘手的语言法律原因,malloc并且realloc不能在可移植 C 中实现。我可能会混淆这里的术语,但问题是,在函数计算出它将返回的指针值之后,它没有办法放弃“有效类型”已与存储相关联。因此,即使您可以让您的版本正常工作,它实际上也是非标准的。