这是我的C ++程序的一部分。它创建一个指向数组的指针,并将其元素初始化为某个值,然后将这些值打印到控制台中。然后,它将数组重新分配为新大小并打印新元素。
代码如下:
#include <iostream>
#include <cstdlib> //realloc
using namespace std;
int main()
{
int* SomeArray;
size_t FirstSize, NewSize;
cout << "Type Value of FirstSize: ";
cin>> FirstSize;
SomeArray = new int[FirstSize];
cout << "Initializing array and typing values of its elements:" << endl;
for (unsigned int i = 0; i < FirstSize; i++)
{
SomeArray[i] = i;
cout << SomeArray[i] << endl;
}
NewSize = FirstSize + 1;
realloc(SomeArray, NewSize); //increasing array size
cout << endl << "Initializing new array and typing values of its elements:" << endl;
for (unsigned int i = 0; i < NewSize; i++)
{
SomeArray[i] = i * 2;
cout << SomeArray[i] << endl;
}
system("pause");
return 0;
}
问题是这样的:
当我将FirstSize设置为0、1、2、3或4时,它工作得很好。 但是,当我将FirstSize设置为5或更大时,它将像正常情况一样打印所有值,但在最后一行冻结,并且在几秒钟后返回错误:
进程终止,状态为-1073741819(0分钟,4秒)
所以看起来它实际上并没有进入system(“ pause”)行。
我使用的IDE:Codeblocks mingw 2017 nosetup。即使在学步模式下也没有警告。如果您感到好奇,我已经尝试在最后一个 for循环后面添加一些内容(例如 cout << hello << endl; ),并进行打印。因此,此 for循环已成功结束。
感谢您抽出宝贵的时间对此进行调查。这也是我在这里的第一个问题,因此,如果我遇到一些格式错误,请随时告诉我。