Joe*_*hor 0 c++ arrays struct access-violation visual-studio-2013
所以我试图让这个程序在结构数组中采用一个struct数组,并为它分配一个1-9的随机数
struct multiDim
{
int t[16];
};
struct multi
{
multiDim t[16];
};
multi generate()
{
multi m;
srand(time(NULL));
for (int i = 0;i <= 16; i++)
{
for (int I = 0;I <= 16;I++)
{
int ii = rand();
ii = ii % 10;
if (ii <= 9)
{
m.t[i].t[I] = ii;
}
}
}
return m;
Run Code Online (Sandbox Code Playgroud)
}
当我尝试使用Visual Studio 2013编译它时,当我尝试返回m时,它会导致错误,说明
ConsoleApplication2.exe中0x0002609B处的未处理异常:0xC0000005:访问冲突写入位置0x00000007.
我在结构中的数组中使用数组的原因是因为要避免<std::vector<std::vector<int>>或者使用其他方法.我没有使用任何指针或解除引用操作符,所以我不确定它是如何导致它抛出的.
但是,在运行pocketcpp的另一台计算机上,我能够成功编译并执行它,但只删除了stdafx.h文件,因为它只适用于Visual Studio实例.编译器没有正确执行的任何原因?
16个元素的合法索引是[0,15],而不是[0,16].从而,
for (int i = 0;i <= 16; i++)
Run Code Online (Sandbox Code Playgroud)
应该改写成
for (int i = 0; i < 16; i++)
Run Code Online (Sandbox Code Playgroud)
它也适用于I循环.