【发布时间】:2013-05-09 05:47:21
【问题描述】:
考虑以下 C++ 类:
class MyClass
{
TypeA a;
TypeB b;
TypeC c;
};
我使用的编译器创建此类的表示形式,即内存中成员的顺序与我在类定义中使用的顺序相同。我最近遇到了一个程序,利用这个事实来初始化成员。我知道这是一个非常糟糕的主意,因为布局取决于编译器,但我没有编写代码并且到目前为止它仍然有效。
我想知道现代操作系统中的ASLR 功能是否会搞砸这一切。我很确定如果对象在heap 上动态实例化,情况并非如此。但是其他情况呢?
【问题讨论】:
标签: c++ class memory-management aslr