【问题标题】:C++ multi array - Windows has triggered a breakpointC++ 多数组 - Windows 已触发断点
【发布时间】:2012-02-16 11:07:24
【问题描述】:

我有一个窗口 opengl 应用程序,我在其中使用多数组,当我尝试关闭它时,它给出: “Windows 在 app.exe 中触发了一个刹车点。 这可能是由于堆损坏..."

我有这样的标题:

class MyClass
{
    private:
        static const int DATA_SIZE = 8;
        double terrain[DATA_SIZE][DATA_SIZE]
    ...
}

在我的应用程序中,我为每个“边缘点”赋予一个值,如下所示:

terrain[0][0] = 5;
terrain[0][DATA_SIZE] = 5;
terrain[DATA_SIZE][DATA_SIZE] = 5;
terrain[DATA_SIZE][0] = 5;

如果我注释掉最后一行 (terrain[DATA_SIZE][0] = 5;),那么就没有警告消息,所以问题出在那一行,但我不知道是什么,它应该可以工作。我希望有一个人可以帮助我。我使用 Visual Studio 2010 Ultimate。

【问题讨论】:

  • 如果你想要每个边缘点(而不是每个角点),你需要填充数组的更多元素(所有 [0][0..DATA_SIZE-1],所有 [DATA_SIZE-1][ 0..DATA_SIZE-1]等)
  • 其他的我稍后补上,我只是没有把那部分包括进去,因为它太长了,但是谢谢。

标签: c++ visual-c++ multidimensional-array


【解决方案1】:

你正在溢出最后一个元素访问索引:使用

terrain[0][DATA_SIZE-1] = 5;
terrain[DATA_SIZE-1][DATA_SIZE-1] = 5;
terrain[DATA_SIZE-1][0] = 5;

【讨论】:

  • 天哪,真是个错误,我忘了在标题中我声明了尺寸。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多