c++ - C/C++ 故意越界索引

标签 c++ c arrays

<分区>

假设我有一个这样的数组:

int val[10];

我有意用从负值到大于 9 的所有值对其进行索引,但不以任何方式使用结果值。这是出于性能原因(也许在进行数组访问后检查输入索引更有效)。

我的问题是:

  1. 这样做是否安全,或者我是否会遇到某种内存保护障碍、内存损坏风险或某些索引的类似问题?
  2. 如果我像这样访问超出范围的数据,是否可能根本没有效率? (假设数组没有内置范围检查)。
  3. 这会被视为不好的做法吗? (假设写了一条评论来表明我们知道使用超出范围的索引)。

最佳答案

这是未定义的行为。根据定义,undefined 意味着“任何事情都可能发生”。你的代码可能会崩溃,它可能会完美运行,它可以为全人类带来和平与和谐。我不会赌第二个或最后一个。

关于c++ - C/C++ 故意越界索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18781840/

相关文章:

javascript - 如何修改 Javascript 中对象克隆数组中的对象值

C++:跨类结构

c - GetProcAddress 为所有函数返回 0

C++ - 从文本文件中获取值到数组中进行比较

c - 向我解释以下 C 程序的输出

c - Glade Textview不显示文本

javascript - 使用 getElementsByClassName 迭代 DOM 元素的正确方法是什么?

c++ - 使用 GCC : Get Call Count of Functions in a Shared Library 进行分析

c++ - Qt 应用程序因内存不足 (OOM) 而终止

c++ - Bazel 头文件代码生成器