0
点赞
收藏
分享

微信扫一扫

获得类成员函数地址

Soy丶sauce 2022-05-20 阅读 85


void mm1()

{

    printf("mm1");

    return;

}


class TTG

{

public:


    int a;

    void m()

    {

        printf("m");

        return;

    };

    void c()

    {

        printf("c");

        return;

    };

};



void mm2()

{

    printf("mm2");

    return;

}


int main(int argc, char* argv[])

{

    printf("Hello World!\n");

    TTG g;

    typedef void (TTG::* PF)(void);


    PF pt= g.m;

    PF pt1= TTG::m;

    DWORD addr=*(DWORD*)&pt;


    printf("%d %d %d %d \n",pt,pt1,addr,TTG::m);


    printf("TTG::m %d TTG::c %d\n",g.m,g.c);

    DWORD add1=(DWORD)mm1;

    DWORD add2=(DWORD)mm2;


    printf("mm1:%d mm2:%d\n",add1,add2);


    return 0;

}

Hello World!

4198528 4198528 4198528 4198528

TTG::m 4198528 TTG::c 4198544

mm1:4198400 mm2:4198416


该结果要在release下才能正确

debug版作了其他的处理,会导致结果不正确。




举报

相关推荐

0 条评论