在Linux中,我了解到每个进程都在32位机器中存储从0x08048000开始的数据(在64位机器中存储0x00400000).
但我不知道从那里开始的原因.在0x08048000用于之前的内存是多少?
更新:有些人认为它是为内核映射的.但据我所知,Linux内核使用在用户堆栈之后启动的高端内存.
我从" Inside the C++ Object Model "中读到,type_info对象通常存储在虚拟表的第一个插槽中.但是,我迭代了虚拟表中的成员:
class Base {
public:
virtual void f() { cout << "Base::f" << endl; }
virtual void g() { cout << "Base::g" << endl; }
virtual void h() { cout << "Base::h" << endl; }
};
typedef void(*Fun)(void);
Base b;
(Fun)*((int*)*(int*)(&b)+0); // Base::f()
(Fun)*((int*)*(int*)(&b)+1); // Base::g()
(Fun)*((int*)*(int*)(&b)+2); // Base::h()
Run Code Online (Sandbox Code Playgroud)
从最后三行看,我根本找不到type_info.