【发布时间】:2020-05-02 18:03:40
【问题描述】:
当通过调用malloc()动态分配一些内存时,操作系统会以某种方式在内部存储分配的内存量(以跟踪使用的内存等),因此我们只提供指向free()的指针'不再需要那个内存块了。
但是,我们cannot 以可移植且独立于操作系统/编译器的方式检索只有指针的大小。存在一些不可移植的方式,例如 Windows/Visual C 上的 _msize 或 glibc 中的 malloc_usable_size。因此,唯一的方法仍然是传播所有需要的大小以及相应的指针等,这很容易出错。
那么,问题是:为什么 C 标准开发人员决定不在标准中包含可移植函数?
附:问“为什么”可能是不恰当的,因为它通常至少在某种程度上涉及基于意见的事情,但在这里我相信这样做是有一些根本原因的。
【问题讨论】:
标签: c memory memory-management malloc size