c - 为什么 C 中没有 "memsize"返回使用 malloc 在堆中分配的内存块的大小?

标签 c memory-management

好的。它可以被称为其他任何东西,如 _msize在 Visual Studio 中。

但是,在给定使用 malloc 分配的内存块的情况下,为什么标准中没有返回内存的大小?由于我们无法判断 malloc 之后的返回指针指向了多少内存,因此我们可以在需要时使用此“memsize”调用返回该信息。 “memsize”和 malloc/free 一样是特定于实现的

只是问问,因为我不得不写一个 wrapper有时回来存储一些额外的字节大小。

最佳答案

因为 C 库(包括 malloc)是为最小开销而设计的。像您想要的那样的函数需要实现记录分配的确切大小,而实现现在可以根据需要选择“四舍五入”大小,以防止在 realloc 中实际重新分配。

存储大小需要每次分配额外的 size_t,这对于嵌入式系统来说可能很重。 (对于在编写 C89 时仍然很丰富的 PDP-11 和 286。)

关于c - 为什么 C 中没有 "memsize"返回使用 malloc 在堆中分配的内存块的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4959938/

相关文章:

c - 如果我要用汇编编写程序,这个 HelloWorld 汇编代码的哪些部分是必不可少的?

java - tomcat集群环境中的内存泄漏

iphone - 如何使用导航 Controller 内存管理 UIViewController?

c++ - Visual Studio 2010 C++ : Get size of memory block allocated by malloc

ios - Instruments 实际报告什么?

c - fork() 没有做我想要的

c - Linux 内核未将完整结构传递给 sysfs 回调

c - 为什么从控制台读取字符并存储在数组中时出现段错误?

将十六进制转换为二进制,然后转换为十进制

C - 解析带有未知数量参数的命令行