我正在使用VC ++ 10进行我正在进行的C ++项目,并且出于某种原因,每当我分配一个对象时,系统会为它分配4kb的内存(即使对象只有几个字节)。
总结一下:
项目非常大,但我没有找到任何指令告诉系统分配那么多内存,我可以验证传递给new / malloc的参数是否是对象的正确大小。
请注意,这会发生在我项目中的所有对象/结构中。
提前谢谢。
答案 0 :(得分:1)
假设您使用的是x86,内存只能以页大小的块或更大的形式提供给内存分配器实现,默认页面大小为4 KB。
您会看到第一个对象的流程工作集有4kb的差异,但在该页面用完之前,您不会看到后续分配的任何内容。
(这假设您正在构建处于发布模式。在调试模式下,CRT可能会为每个对象使用更多内存进行金丝雀/边界检查)