使用变量num时,变量堆栈会被破坏

时间:2015-12-28 17:42:09

标签: c++

当使用变量num时,我在访问第9个索引时遇到堆栈损坏错误,但是当我使用任何其他名称访问时,它会出错。请解释一下这种模糊性。

#include<iostream>
#include<iomanip>
using namespace std;
const int SIZE = 9;

class A
{
private:

    int num[SIZE];
    int num_2[SIZE];
public:
A()
{
    for(int i = 1 ; i <= 9 ; i++)
    {
        num_2[i] = i;
    }  
}
};
void main()
{
    A obj;
}

2 个答案:

答案 0 :(得分:6)

如果SIZE = 9那么你的循环应该是

for(int i = 0; i < SIZE ; i++)

C ++使用基于0的索引,因此数组的第一个索引是[0],最后一个是[SIZE-1]

答案 1 :(得分:1)

问题是i <= 9
num_2[9]已超出num_2

的结尾