参见英文答案 >
Access array beyond the limit in C and C++7个
> How dangerous is it to access an array out of bounds?11个
说我有一个像这样的数组:
> How dangerous is it to access an array out of bounds?11个
说我有一个像这样的数组:
int val[10];
我故意用从负值到任何高于9的值来索引它,但没有以任何方式使用结果值.这可能是出于性能原因(也许在进行数组访问后检查输入索引会更有效).
我的问题是:
>这样做是否安全,或者我是否会遇到某种内存保护障碍,有可能破坏某些指数的内存或类似情况?
>如果我像这样访问超出范围的数据,它可能没有效率吗? (假设数组没有内置范围检查).
>这会被视为不良做法吗? (假设写了一条注释,表示我们知道使用超出范围的索引).
解决方法
这是未定义的行为.根据定义,undefined意味着“任何事情都可能发生”.你的代码可能崩溃,它可以完美地工作,它可以带来所有人的和平与和谐.我不打赌第二次或最后一次.