【问题标题】:Could accessing array element outside boundary corrupt it访问边界外的数组元素是否会损坏它
【发布时间】:2019-06-12 09:36:18
【问题描述】:

是否有可能在其边界之外访问数组会破坏其现有元素

MyObject* array[10];

for(int i=0; i<10; i++)
{
    array[i] = nullptr;
}
array[1] = new MyObject();
array[8] = new MyObject();
array[15] = new MyObject();

访问 array[15] 会导致 0-10 之间的元素损坏吗?

【问题讨论】:

  • 访问array[15] 可能会在你的房间里产生一条龙,我想破坏元素 0-10 也是可能的。
  • 我注意到,UB最常见的表现是代码按预期工作,但只有在老板不看的时候。

标签: c++ arrays undefined-behavior


【解决方案1】:

访问array[15] 会导致0-10 之间的元素损坏吗?

是的。这是未定义的行为,UB 的本质是任何事情都可能发生。特别是,推理可能发生什么或什么更有可能发生通常没有多大意义。它可以是任何东西,包括在 UB 之前完好无损的一些数组元素的损坏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-05
    • 2021-12-24
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2012-05-25
    相关资源
    最近更新 更多