Blog
Notes
Archives
About
Contact
Blog
Notes
Archives
About
Contact
this call
类的静态成员函数,本质上是采用_cdecl约定
类一定要有构造函数吗
std call
11-底层理解类
this call
_thiscall是C++中类的成员函数访问时定义的函数调用约定
通常寄存器ecx用来存放类的指针
参数由右到左入栈
堆栈由被调用者负责恢复
类中的非静态成员函数都可以使用this指针,this指针本质上来讲就是把对象的指针通过寄存器ecx传入成员函数,因此类中的成员函数访问其变量是,都是通过指针+偏移的形式来访问的,不管是否明确使用this指针
类的静态成员函数,本质上是采用_cdecl约定
参数由右到左入栈
由调用者恢复堆栈平衡
因为类的静态成员函数本质上就是一个普通的函数,所以根本没有传递对象的指针,因此,也就不能访问其成员变量,
而类的静态成员变量本质上相当于一个全局变量,有着固定的内存地址,与类对象并无关系,所以类的静态成员可以在类没有实例的情况下通过 __类::静态成员__这样的形式来访问
类一定要有构造函数吗
通常情况下,每个类都有一个默认的构造函数,如果没有显式指定,编译器会为我们添加一个空的默认构造函数
但是在逆向汇编时会发现,一个空的构造函数实际上没有任何意义,所以某些情况下编译器会删除掉没有意义的构造函数
std call
参数从左往右依次入栈,并且在函数返回前,清空堆栈
Please enable JavaScript to view the
comments powered by Disqus.
comments powered by
Disqus