考虑以下 C++ 类:
class MyClass
{
TypeA a;
TypeB b;
TypeC c;
};
我使用的编译器创建此类的表示形式,即内存中成员的顺序与我在类定义中使用的顺序相同。我最近遇到了一个程序,利用这个事实来初始化成员。我知道这是一个非常糟糕的主意,因为布局取决于编译器,但我没有编写代码并且它到目前为止工作。
我想知道ASLR
现代操作系统中的功能是否会搞砸这一切。我很确定如果对象在heap
. 但是其他情况呢?
考虑以下 C++ 类:
class MyClass
{
TypeA a;
TypeB b;
TypeC c;
};
我使用的编译器创建此类的表示形式,即内存中成员的顺序与我在类定义中使用的顺序相同。我最近遇到了一个程序,利用这个事实来初始化成员。我知道这是一个非常糟糕的主意,因为布局取决于编译器,但我没有编写代码并且它到目前为止工作。
我想知道ASLR
现代操作系统中的功能是否会搞砸这一切。我很确定如果对象在heap
. 但是其他情况呢?