<分区>
假设我有一个这样的数组:
int val[10];
我有意用从负值到大于 9 的所有值对其进行索引,但不以任何方式使用结果值。这是出于性能原因(也许在进行数组访问后检查输入索引更有效)。
我的问题是:
- 这样做是否安全,或者我是否会遇到某种内存保护障碍、内存损坏风险或某些索引的类似问题?
- 如果我像这样访问超出范围的数据,是否可能根本没有效率? (假设数组没有内置范围检查)。
- 这会被视为不好的做法吗? (假设写了一条评论来表明我们知道使用超出范围的索引)。
<分区>
假设我有一个这样的数组:
int val[10];
我有意用从负值到大于 9 的所有值对其进行索引,但不以任何方式使用结果值。这是出于性能原因(也许在进行数组访问后检查输入索引更有效)。
我的问题是:
最佳答案
这是未定义的行为。根据定义,undefined 意味着“任何事情都可能发生”。你的代码可能会崩溃,它可能会完美运行,它可以为全人类带来和平与和谐。我不会赌第二个或最后一个。
关于c++ - C/C++ 故意越界索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18781840/