一.类和对象

     <1.类在编译器编译阶段会被编译为虚函数表,以便快速加载和执行

     <2.对象是手动创建的一块内存区域,其中一个成员变量指向虚函数表

     <3.对象分布在堆区,可以存在很多个.虚函数表在rdata区,在PE加载后稳定不变常驻在内存中

二.虚函数表初始化

     <1.编译器将类中定义的函数编译在text段,在rdata段创建一块内存区域存储指向text段函数的指针,即为虚函数表

     <2.虚函数表的表头地址+固定偏移 = 类中函数的实际地址.

     <3.调用虚函数表中的函数采用ptr + offset进行调用.在PE文件编译完成后固定不变

三.对象的创建

    <1.调用WindowsAPI在堆区创建一块内存,内存首个变量存放指向虚函数表的指针

    <2.对象中的成员变量在编译后采用对象首地址Ptr+固定编译进行访问,PE编译完毕后稳定不变

    

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐