夜深人静了做一道C语言题吧
本帖最后由 extlpf 于 2012-9-14 01:16 编辑GCC能否编译通过下面的C程序?如果可以,运行结果是什么?为什么?很简单哦~
int main() {
(*(void(*)(void))0)();
}
在linux下验证了一下,编译肯定是能过的,但是跑起来就段错误了,内存越界了. {:5_150:}略牛。。。看不懂 @
{:6_190:}更看不懂…… 其实就是调用函数指针入口地址为0的函数而已,只是有个强制地址类型转换
typedefvoid (*pfunc) (void);
(*(pfunc)0) (); vazor 发表于 2012-9-15 01:08 static/image/common/back.gif
其实就是调用函数指针入口地址为0的函数而已,只是有个强制地址类型转换
typedefvo ...
是不是1楼的内存越界,是因为访问了不该访问的位置? maxOrder石 发表于 2012-9-15 01:20 static/image/common/back.gif
是不是1楼的内存越界,是因为访问了不该访问的位置?
其实这段程序显然不能在一般电脑上执行的,因为指针地址为0其实就是NULL,NULL是受保护的。这个程序应该是针对某种嵌入式或特定机器而写出来。 vazor 发表于 2012-9-15 11:19 static/image/common/back.gif
其实这段程序显然不能在一般电脑上执行的,因为指针地址为0其实就是NULL,NULL是受保护的。这个程序应该是 ...
谢大神指点!{:6_170:} 杨峰老师好像教过的吧。。。。。可惜还是不会~~~哭过~~~~~~~~~~~~~
页:
[1]