在用户程序中,堆空间分配动态内存,栈空间分配的相对来说是静态内存;
数据段和代码段属于静态内存,堆和栈相对来说都是动态内存;
内核中的静态变量和代码属于静态内存,整个用户程序相对来说都是动态内存。
///
同理:
常数值在编译时就确定,变量值要到运行时才确定;
局部变量相对于栈基址的偏移,编译时就确定,堆空间变量的相对位置也要运行时才确定;
静态变量在用户空间的地址【虚拟地址】编译时就确定,而非静态变量运行时才确定;
非虚函数的执行编译时就确定,而虚函数的执行运行时才确定;
直接调用虚函数时,虚函数在虚表中的偏移(或索引)编译时就确定,而通过函数指针调用虚函数时,这个索引值运行时才确定【因此微软采用了VCALL的方式】