如果下标超过C中数组的大小,则为数组赋值时会发生什么

Pra*_*ady 2 c

如果下标超过C中数组的大小,为数组赋值时会发生什么?

在其他语言中,它会引发异常,C是否也会抛出异常?出于某种原因,我没有得到任何错误

ken*_*ytm 7

如果下标超过C中数组的大小,为数组赋值时会发生什么?

坏事发生了.或不.事实上,标准规定它是未定义的行为,这意味着任何事情都可能发生.

在其他语言中,它会引发异常,C是否也会抛出异常?

没有.


Khe*_*ben 6

它高度依赖于程序,编译器和系统.Windows通常对越界内存更严格,而Linux可以给你一些额外的空间,这可以使程序正常工作(即使有问题).

如果你很幸运,系统会立即崩溃,你会在出现错误时发现错误.如果你不幸运,那将改变一个完全出乎意料的(但从程序的角度来看是正确的)变量,并且会在导致问题的代码的完全不同的部分上产生奇怪的错误.这些可能是C上最严重的错误......

在Linux系统中,一个很棒的工具是Valgrind,它将检查这类问题(以及其他问题).不幸的是,我不知道Windows上的等效工具...... :-(

C无法抛出异常,所以......