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

dub*_*nde 5 c memory-management

好.它可以在Visual Studio 中的_msize中调用.

但是为什么在使用malloc分配内存块的情况下,返回内存大小并不符合标准?因为我们无法判断malloc后面的返回指针指向了多少内存,所以我们可以使用这个"memsize"调用来返回我们需要的信息."memsize"将是特定于实现的,因为malloc/free

只是问,因为我必须在某个时候写一个包装器来存储大小的一些额外字节.

Fre*_*Foo 6

因为C库,包括malloc,设计用于最小的开销.像你想要的那样的函数需要实现来记录分配的确切大小,而实现现在可以选择根据需要"舍入"大小,以防止实际重新分配realloc.

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

  • 这毫无意义.已经记录了大小(否则`free()`将不起作用).我认为真正的答案是没有人真正看到任何用途.OP的情况相当独特,更能说明图书馆设计不佳而不是C库中的缺陷. (3认同)