gpt4 book ai didi

c - 指针元信息

转载 作者:行者123 更新时间:2023-12-02 08:27:46 24 4
gpt4 key购买 nike

realloc() 的一个有趣特性是它在复制或扩展您分配的内存时以某种方式知道您的数据有多长。

我读到发生的事情是在幕后存储了一些关于指针的元信息(其中包含它分配的内存大小),通常紧接在指针指向的地址之前(但当然,取决于实现) .

所以我的问题是,如果存储了这样的数据,为什么不通过 API 公开它,这样像 C 字符串这样的东西就不必寻找 \0知道字符串的结尾在哪里。

还有数百种其他用途。

最佳答案

正如您自己所说,它取决于标准库的内存管理器的实现。

C 没有针对此类功能的标准,可能是因为一般来说 C 被设计为简单(但也提供了很多功能)。

话虽如此,除了用于调试内存分配的功能之外,这种类型的功能并没有太多用处。

一些编译器 do provide this type of functionality ( specifically memory block size ),但很明显它仅用于调试目的。

编写自己的内存管理器并不少见,这样您就可以完全控制分配,甚至可以对其他库组件进行假设。正如您所提到的,您的实现可以将分配的大小存储在 header 中的某处,并且字符串实现可以引用该值而不是遍历 \0 终止的字节。

关于c - 指针元信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30516469/

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