|
|
1
10
如果它工作正常(即如果这没有产生崩溃,并且对象外部没有指针),那么我就不会太担心了。 |
|
|
2
6
|
|
|
3
2
wikipedia article on thunking 。如果将调试器设置为逐步遍历汇编代码,则应该会看到它发生。(无论是thunk还是简单地更改偏移量,都取决于你从给出的代码中省略的细节) |
|
|
4
1
如果没有使用虚拟方法,则指向对象的指针指向对象的数据。一旦引入了虚拟方法,编译器就会插入一个虚拟查找表(vtable),指针就会指向该表。我可能遗漏了一些东西(我的大脑还没有工作),因为在基类中插入数据成员之前,我无法实现这一点。如果基类有一个数据成员,而第一个子类有一个虚成员,那么偏移量会因vtable的大小而异(在我的编译器上为4)。这里有一个例子清楚地表明了这一点:
在我的机器(MacBook Pro)上运行此程序会打印以下内容:
这将有助于消除这样的小意外。 |
|
|
5
0
|
|
|
6
0
我无法解释为什么这有效,但将CWaitable::WakeWaiters声明为虚拟解决了这个问题 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |