Pra*_*ady 2 c
如果下标超过C中数组的大小,为数组赋值时会发生什么?
在其他语言中,它会引发异常,C是否也会抛出异常?出于某种原因,我没有得到任何错误
ken*_*ytm 7
坏事发生了.或不.事实上,标准规定它是未定义的行为,这意味着任何事情都可能发生.
在其他语言中,它会引发异常,C是否也会抛出异常?
没有.
Khe*_*ben 6
它高度依赖于程序,编译器和系统.Windows通常对越界内存更严格,而Linux可以给你一些额外的空间,这可以使程序正常工作(即使有问题).
如果你很幸运,系统会立即崩溃,你会在出现错误时发现错误.如果你不幸运,那将改变一个完全出乎意料的(但从程序的角度来看是正确的)变量,并且会在导致问题的代码的完全不同的部分上产生奇怪的错误.这些可能是C上最严重的错误......
在Linux系统中,一个很棒的工具是Valgrind,它将检查这类问题(以及其他问题).不幸的是,我不知道Windows上的等效工具...... :-(
C无法抛出异常,所以......
归档时间:
16 年 前
查看次数:
12200 次
最近记录:
12 年,3 月 前