【发布时间】:2017-01-20 17:20:49
【问题描述】:
我收到错误:“Test.exe 中 0x00d23737 处的未处理异常:0xC0000005:访问冲突读取位置 0x8a8c0344”当我执行以下代码时会发生这种情况:
int main(int argc, char* argv[])
{
string My_String_Array[30720];
Initialize_My_String_Array (My_String_Array); //i really doubt that there is something wrong in the definition of this function
for (int i=0;i<=30719;i++)
{
cout<<My_String_Array[i]<<endl;
}
system("pause");
return 0;
}
Initialize_My_String_Array() 的代码如下:
void Initialize_My_String_Array (My_String_Array[30720])
{
string Initialization_Values[]={"A","B","C","D","E"};
int Index=0;
int i=0;
int j=0;
while (i<=30719)
{
My_String_Array[i]=Initialization_Values[Index];
i++;
j++;
if (j=6144)
{
j=0;
Index++;
}
}
任何想法都将不胜感激。
【问题讨论】:
-
@NathanOliver,您链接的问题与该用户遇到的问题不同。这不是那个问题的重复。
-
然后简化您的问题 - 尝试从等式中删除 Initialization_Values[value]
-
@NathanOliver 重读代码的第一部分。
My_String_Array被声明为string[],而不是string。 -
if(j=6144)不检查j是否等于 6144(它将 6144 分配给j),因此您的Index值可能很快超过 4。 -
@PeterRitchie - 或者...调试器:P
标签: c++ arrays visual-studio-2010 loops debugging