星期一, 十二月 10, 2007

gcc的虚函数表

gcc的虚函数表是怎么组织的?它是和版本相关的,在2.x的gcc版本中(我知道的是2.7和2.9)我们可以看到虚表中每个函数指针占用了8个字节,这8个字节的后四个字节才是虚函数指针,而在3.x的版本中(比如3.3),则类似于VC,4个字节一个函数指针,这比较紧凑。

一般情况下,这不会影响什么,但如果要写一些特殊的代码,依赖于虚表的格式(比如通过虚表去调用函数),那么问题就来了,把格式弄错的话,就可能会导致严重的" Pure Virtual Function Called"问题,直接导致程序Crash掉。

不过不要混淆这个问题和 这篇 文章 提到的问题,虽然结果都是一样的"Pure Virtual Function Called"。。。

0 Comments:

发表评论

<< Home