您的位置:首页 > 其它

关于空指针调用类成员能否通过的问题

2011-01-26 02:41 239 查看
因为被头问起,前阵子研究了下关于空类指针的调用是否会报错的问题。

详细的情况是这样。

空指针调用类成员,有几种情况,普通函数一旦访问类成员,则一定会抛出异常。这是绝大多数的情况。但如果函数没有访问任何类成员,这个函数调用就会成功。(估计这样的函数也不太多-_-) 静态成员函数基本等同于全局函数,所以也可以通过。而对虚函数的调用则不论是否访问类成员都会导致异常的抛出,因为虚函数要访问虚表指针。

但这些也都不是绝对的,如果所访问的类成员的偏移量超过了65535,就会越过操作系统的禁入内存区。则照样可以避开操作系统的检查而不会抛出任何异常。(注意这里指windows32位操作系统) 当然,这么大的类一般情况下其实是没有的。

但这种情况显然是不好的,改写不该改写的内存,或者读取了错误的信息,结果都将是不确定的。

无论是否能够通过,都不应该出现使用空指针的情况。

在逻辑完整正确的情况下,显然不应该出现这种情况,如果哪个程序员能犯下这种错误,那么几乎毫无疑问的,他的代码必然存在着无数的bug,等待他或他的团队的恐怕将是无穷无尽的痛苦调试。

这里只是研究一下空指针使用可能出现的情况,估计真的会犯这种错误的程序员大概不多吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: