1

我在输出数组时遇到问题。当我在没有循环的情况下输出每个元素时for,程序运行良好。当我尝试使用for循环输出时,程序在我第一次在数组中设置元素时崩溃。当我取消注释for循环时,我已经标记了程序崩溃的行。我的排序似乎工作正常,并且程序在此之前崩溃了,所以我很确定这不是问题。任何想法为什么第二个for循环会在指定行使程序崩溃?

int main()
{
   int* Array;
   int j = 5;
   for(int i=0; i<5; i++)
   {
       Array[i] = j; //Crashes here with 2nd for loop uncommented
       cout << Array[i] << endl;
       j--;
   }
    Array = insertion_sort(Array);

    cout << Array[0] << endl;
    cout << Array[1] << endl;
    cout << Array[2] << endl;
    cout << Array[3] << endl;
    cout << Array[4] << endl;



   /*for(int k=0; k <5; k++)
   {
      cout << Array[k] << endl;
   }*/


}
4

2 回答 2

3

您在初始化指针之前访问它。你应该改变

int* Array;

int* Array = new int[5]; // There are 5 ints in my array

并确保

delete[] Array;

最后,甚至更好:

int Array[5]; // This way you don't need the new keyword, so you won't need to delete[] later
于 2013-09-19T21:52:52.530 回答
1

现在,您的数组尚未实例化。这只是一个指针。在开始写入之前,您需要选择所需的数组大小。

int* Array = new int[5];
int j = 5;
for(int i=0; i<5; i++)
{
    Array[i] = j; //Crashes here with 2nd for loop uncommented
    cout << Array[i] << endl;
    j--;
}
于 2013-09-19T21:52:42.623 回答