为什么 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 分配的内存块指向多少。
在搜索了一些有关分配(通过 malloc
之类的东西)后释放(通过 free
)如何工作的信息后,我感到很困惑。
四处阅读,消息来源说,当分配内存时,它实际上多分配了一个字来存储分配的大小。这就是 free
用来释放内存的方法。但是随着这些信息出现了另一个我无法在任何地方找到答案的问题:如果分配的内存大小存储在某个地方,为什么 C 中没有函数或方法可以通过 malloc
?
C 标准只指定了分配和释放内存所需的函数。这意味着如何管理堆是系统上标准库的实现细节。 Linux 的实现方式可能与 Microsoft 的实现方式大不相同。
话虽这么说,但有时这些实现会公开额外的函数,这些函数会公开堆的内部状态。例如,Linux 有一个名为 malloc_usable_size
的函数,它传递一个指向已分配内存的指针和 returns 可以在该地址写入的字节数。
不过,最好不要像那样依赖系统特定的功能。您的程序应该有一些方法来跟踪 space 分配的内存块指向多少。