当通过调用动态分配一定量的内存时malloc(),操作系统内部会以某种方式存储分配的内存量(以跟踪已使用的内存等),因此我们仅在free()不再需要该内存块时提供指针。
但是,我们无法以可移植且与操作系统/编译器无关的方式检索只有指针的大小。也存在一些不可移植的方式类似_msize在Windows /的Visual C,或malloc_usable_size在glibc的。因此,唯一的方法仍然是传播所有需要的大小以及相应的指针等,这很容易出错。
所以,问题是:为什么 C 标准开发人员决定不在标准中包含可移植功能?
PS 问“为什么”可能是不恰当的,因为它通常至少在某种程度上涉及基于意见的事情,但在这里我相信有一些基本的理由这样做。