C ++程序在Linux上运行完美,但无法在Windows上运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++程序在Linux上运行完美,但无法在Windows上运行相关的知识,希望对你有一定的参考价值。

我有这个代码在Ubuntu 16.04.3 LTS上完美运行。但是当我通过Windows上的Codeblock构建并运行它时。这只是CRASH。我不知道我错了什么,我怎么能解决这个问题。我写的很多C ++程序可以在Linux上运行但在Windows上运行CRASH就像那样。

Crashed Pricture

非常感谢你们的帮助!

#include <iostream>

using namespace std;

int d = 1;

void topRight(int [999][999], int, int, int, int);
void bottomLeft(int [999][999], int, int, int, int);

void topRight(int a[999][999], int x1, int y1, int x2, int y2) {
  for (int i=x1;i<=x2;i++) a[y1][i]=d++;
  for (int j=y1+1;j<=y2;j++) a[j][x2]=d++;
  if (x2-x1>0 && y2-y1>0){
    y1++;
    x2--;
    bottomLeft(a,x1,y1,x2,y2);
  }
}

void bottomLeft(int a[999][999], int x1, int y1, int x2, int y2) {
    for (int i=x2;i>=x1;i--) a[y2][i]=d++;
    for (int j=y2-1;j>=y1;j--) a[j][x1]=d++;
    if (x2-x1>0 && y2-y1>0) {
        x1++;
    y2--;
        topRight(a,x1,y1,x2,y2);
    }
}

int main(void){
  int a[999][999],m,n,i,j;
  cout << "Insert n: ";
  cin >> n;
  cout << "Insert m: ";
  cin >> m;
  topRight(a,0,0,n-1,m-1);
  cout << "
A spiral-shaped two-dimensional array whith size " << m << " x " << n << " is: 

";
  for(i=0;i<m;i++){
    for(j=0;j<n;j++){
      cout << a[i][j] << "  ";
    }
    cout << "
";
  }
}

我使用此命令在Ubuntu终端上编译:

g++ program.cpp -o program

并使用此命令运行它:

./program
答案

当您声明999x999矩阵时,使用简单的数学运算:

999*999 = 998001

一个整数在内存中保存4个字节,所以

998001*4 = 3992004

几乎等于4 * 10 ^ 6字节。当你在main函数中声明一个变量时,它会尝试从堆栈中获取内存。在堆栈中,你不能给这样的记忆。这就是为什么你得到stackoverflow错误。

尝试减小矩阵的大小或将此变量声明为全局变量。但全球变量也有限制。

以上是关于C ++程序在Linux上运行完美,但无法在Windows上运行的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Geolocator 无法在 Android 上运行,但可以在 iOS 上完美运行

win7平台下编译的JAVA程序能在linux系统下运行么

如何用批处理bat运行一个程序,但这个程序却无法在dos环境下运行,我系统是win7,求解!

iOS 应用程序:在模拟器上运行但不构建.app

在 Linux 上运行 Emgu.CV

在Android上运行Java和C程序