【发布时间】:2013-03-30 15:46:15
【问题描述】:
考虑到使用最近的 Visual Studio C++ 编译器的 Windows 上的 C++,我想知道 heap 的实现:
假设我使用的是发布编译器,并且我不关心内存碎片/打包问题,那么在堆上分配内存是否存在内存开销?如果是这样,那么每个分配大概有多少字节?
64-bit 的代码会比 32-bit 大吗?
我不太了解现代 heap 实现,但我想知道是否在每次分配时都将标记写入 heap,或者是否有某种维护表(如文件分配表)。
在相关点上(因为我主要考虑标准库功能,如“地图”),Microsoft 标准库实现是否曾经使用自己的分配器(用于树节点之类的东西)来优化 堆使用情况?
【问题讨论】:
-
通常,当您分配数组时,一些字节以分配的大小存储在开头以供将来删除。对于大型分配,开销几乎为零。如果你一次分配 4 个字节,它可以很好地使内存翻倍。
标签: c++ windows visual-studio memory-management heap-memory