当我访问数组之外的项目时,我必须显示错误(不创建我自己的函数).所以我只是认为有必要从数组中访问值以触发段错误,但这段代码根本不会崩溃:
int main(){ int tab[4]; printf("%d", tab[7]); }
为什么我这样做时不能出错?
当您调用未定义的行为时,任何事情都可能发生.您的程序可能会崩溃,它可能会显示奇怪的结果,或者它可能似乎正常工作.
此外,进行看似无关的更改(例如添加未使用的局部变量或简单调用)printf
可以更改未定义行为的显示方式.
当我运行这个程序时,它完成并打印63.如果我将引用的索引从7更改为7000,我会得到段错误.
总之,不能因为程序可以崩溃并不意味着它会.