【发布时间】:2012-04-16 20:45:44
【问题描述】:
将应用程序从 32 位升级到 64 位会增加指针大小和对象的内存占用。
我正在寻找尽可能减少对象内存占用的方法。 对于 POD 结构,我转储结构的内存布局,以找出如何打包成员并减少编译器填充。
有没有办法弄清楚非 POD 对象(例如类实例)的内存布局? 我怎样才能实现类似于打包类对象的东西?
谢谢, 丹
【问题讨论】:
-
通常会有编译器特定的标志和编译指示,并且重新排序字段可能会产生影响。然而,所有这些都可能影响性能和互操作性
-
你使用的是哪个编译器?
-
@dbbd btw 为什么您担心 64 位架构中的进程内存大小? 64 位架构可以支持巨大的虚拟内存大小。不像 32 位拱形
-
@weima 虚拟内存很大并不意味着应用程序使用的实际内存也一定很大
-
您也可以使用不同的打包选项构建您的程序,并比较两种情况下的内存消耗(打印 sizeofs 或运行一些实际测试)。这可以帮助您确定是否值得继续进一步调查。
标签: c++ memory memory-alignment