04 2023 档案
摘要:问题来源 查找系统调用open函数,发现存在同名函数,可是C语言没有函数重载的概念。 代码层面分析 从代码中跳转到open函数声明,看到了变参函数,这样就符合C语言的语法规则了。 可变参数 参数需要具备一定特征 第一个参数为参数总个数 第N个参数为NULL或其他具有代表性的值 参数从右向左入栈,然后
阅读全文
摘要:1. 在调用成员函数前,先将对象地址存入 ecx 寄存器,进入函数后将 ecx 压栈保存对象地址,当需要用到 this指针 时,再弹栈取出赋值给函数内部自带的一个 this指针 2. 数据成员是由 this指针 +偏移取到的。类的对齐规则和结构体一致 3. 静态成员函数没有 this指针 4. 若函
阅读全文
摘要:0. 原理简述 父类中如果存在虚函数,类中会隐含一个虚函数指针,指向一个虚函数表,表中存储了父类的所有虚函数入口地址。子类继承父类,会复制一份虚指针和虚表。此时如果子类重写了父类的虚函数,会将重写的虚函数入口地址更新到虚表中。若父类指针指向了子类,并且调用虚函数,会在我们更新的虚表里找虚函数入口地址
阅读全文