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

因为被头问起,前阵子研究了下关于空类指针的调用是否会报错的问题。
详细的情况是这样。
空指针调用类成员,有几种情况,普通函数一旦访问类成员,则一定会抛出异常。这是绝大多数的情况。但如果函数没有访问任何类成员,这个函数调用就会成功。(估计这样的函数也不太多-_-)  静态成员函数基本等同于全局函数,所以也可以通过。而对虚函数的调用则不论是否访问类成员都会导致异常的抛出,因为虚函数要访问虚表指针。
但这些也都不是绝对的,如果所访问的类成员的偏移量超过了65535,就会越过操作系统的禁入内存区。则照样可以避开操作系统的检查而不会抛出任何异常。(注意这里指windows32位操作系统) 当然,这么大的类一般情况下其实是没有的。
但这种情况显然是不好的,改写不该改写的内存,或者读取了错误的信息,结果都将是不确定的。
无论是否能够通过,都不应该出现使用空指针的情况。

在逻辑完整正确的情况下,显然不应该出现这种情况,如果哪个程序员能犯下这种错误,那么几乎毫无疑问的,他的代码必然存在着无数的bug,等待他或他的团队的恐怕将是无穷无尽的痛苦调试。
这里只是研究一下空指针使用可能出现的情况,估计真的会犯这种错误的程序员大概不多吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值