当前位置:  开发笔记 > 编程语言 > 正文

为什么我没有用这个简单的代码得到段错误?

如何解决《为什么我没有用这个简单的代码得到段错误?》经验,为你挑选了1个好方法。

当我访问数组之外​​的项目时,我必须显示错误(不创建我自己的函数).所以我只是认为有必要从数组中访问值以触发段错误,但这段代码根本不会崩溃:

int main(){
    int tab[4];
    printf("%d", tab[7]);
}

为什么我这样做时不能出错?



1> dbush..:

当您调用未定义的行为时,任何事情都可能发生.您的程序可能会崩溃,它可能会显示奇怪的结果,或者它可能似乎正常工作.

此外,进行看似无关的更改(例如添加未使用的局部变量或简单调用)printf可以更改未定义行为的显示方式.

当我运行这个程序时,它完成并打印63.如果我将引用的索引从7更改为7000,我会得到段错误.

总之,不能因为程序可以崩溃并不意味着它.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有