使用realloc()的程序可以正常工作,但最后它返回错误-1073741819。有人可以在此代码中找到我的错误吗?

时间:2018-12-01 18:19:10

标签: c++ arrays realloc

这是我的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循环已成功结束。

感谢您抽出宝贵的时间对此进行调查。这也是我在这里的第一个问题,因此,如果我遇到一些格式错误,请随时告诉我。

0 个答案:

没有答案