我尝试了这个:
int main(void) {
int a[10]; a[20]=5;
}
使用命令:
gcc -Wall -O2 main.c
但是没有任何警告...
我在Windows系统中使用的是gcc(mingw),无法检测到这种边界限制错误。
请问如何让编译器检查这个错误?mingw能够实现吗?
谢谢!
我尝试了这个:
int main(void) {
int a[10]; a[20]=5;
}
使用命令:
gcc -Wall -O2 main.c
但是没有任何警告...
我在Windows系统中使用的是gcc(mingw),无法检测到这种边界限制错误。
请问如何让编译器检查这个错误?mingw能够实现吗?
谢谢!
有尝试解决数组边界检查的方法。默认情况下,标准的C99不会强制执行数组边界,我认为主要是因为它具有更多的开销。
话虽如此,您可以查看像这样的网站,人们已经尝试解决这个问题:
ex9.c:17:2: warning: array index 4 is past the end of the array (which contains
4 elements) [-Warray-bounds]
numbers[4] = 4;
^ ~
ex9.c:4:2: note: array 'numbers' declared here
int numbers[4] = {0};
^