2D阵列的静默运行时错误

时间:2018-01-31 01:45:36

标签: c++

我正在创建2D数组,其结构是带有动态数组的静态数组。代码如下:

#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;

#define MAT_SIZE 100000

typedef float* DynMat[MAT_SIZE];

int main()
{
   int r, c;

   DynMat matDyn, matDynAns;

   for (r = 0; r < MAT_SIZE; r++)
   {
      matDyn[r] = new float[MAT_SIZE];
      matDynAns[r] = new float[MAT_SIZE];
      for (c = 0; c < MAT_SIZE; c++)
      {
         matDyn[r][c] = 0;
         matDynAns[r][c] = 0;
      }
   }

   cout << "hello" << endl;
}

我相信在我初始化矩阵期间会抛出静默运行时错误,因为代码编译并运行,但没有打印任何内容。

1 个答案:

答案 0 :(得分:2)

您的程序逐渐分配80 GB的内存。它不打印任何东西,因为它永远交换。 (这类似于thrashing,但不是重复加载“少数”页面,而是直接填充其中的许多页面。)