为什么 C 中没有函数 returns 分配的内存大小由指针指向?

Why is there not a function in C that returns size of memory allocated pointed to by a pointer?

在搜索了一些有关分配(通过 malloc 之类的东西)后释放(通过 free)如何工作的信息后,我感到很困惑。

四处阅读,消息来源说,当分配内存时,它实际上多分配了一个字来存储分配的大小。这就是 free 用来释放内存的方法。但是随着这些信息出现了另一个我无法在任何地方找到答案的问题:如果分配的内存大小存储在某个地方,为什么 C 中没有函数或方法可以通过 malloc?

C 标准只指定了分配和释放内存所需的函数。这意味着如何管理堆是系统上标准库的实现细节。 Linux 的实现方式可能与 Microsoft 的实现方式大不相同。

话虽这么说,但有时这些实现会公开额外的函数,这些函数会公开堆的内部状态。例如,Linux 有一个名为 malloc_usable_size 的函数,它传递一个指向已分配内存的指针和 returns 可以在该地址写入的字节数。

不过,最好不要像那样依赖系统特定的功能。您的程序应该有一些方法来跟踪 space 分配的内存块指向多少。