我读过(http://www.nobugs.org/developer/win32/debug_crt_heap.html),除了请求的内存块之外,HeapAlloc 还为簿记分配了一些内存。bookkeeping info 的大小应为 40 字节(块前 8 字节,块后 32 字节)。
但是,当我用我的 VS2010 运行测试时,实际消耗的内存会明显减少。例如,我将 1M 个整数插入到一个集合中。我为 malloc 编写了一个钩子函数,以确保每次插入都会触发一个单独的动态内存分配请求来构造一个新节点。根据 hook,一个节点占用 20 个字节。如果我们增加 80 字节的开销,一个节点的总内存应该是 100 字节。也就是说,这套设备应该消耗大约 100 兆,而根据 TaskManager,它只需要 32 兆。
因此,我有以下问题:
开销真的是 40 字节吗?开销是否适用于每个 HeapAlloc 的块?