使用这些二维数组(C+;+;)时,我的内存是否用完了? 我尝试将这个C++代码作为Windows控制台应用程序运行,但是当它启动时,它立即关闭,只给我一个标准“程序已经停止工作”Windows通常给我的错误。

使用这些二维数组(C+;+;)时,我的内存是否用完了? 我尝试将这个C++代码作为Windows控制台应用程序运行,但是当它启动时,它立即关闭,只给我一个标准“程序已经停止工作”Windows通常给我的错误。,c++,memory,multidimensional-array,crash,stack-overflow,C++,Memory,Multidimensional Array,Crash,Stack Overflow,程序的主要功能是(后面省略了一点额外的代码): intmain(){ cout堆栈的大小比堆的大小小得多。使用new或malloc分配的任何内容都会放在堆上,但如果不小心,可以非常快地填充堆栈 考虑到这个网站,你可能会因为这么多大的数组而导致堆栈溢出 要执行此操作,请尝试以下代码: #include <iostream> int main(int argc, char* argv[]) { int sarr2d[5][10]; typedef int dimension[10];

程序的主要功能是(后面省略了一点额外的代码):

intmain(){

cout堆栈的大小比堆的大小小得多。使用
new
malloc
分配的任何内容都会放在堆上,但如果不小心,可以非常快地填充堆栈

考虑到这个网站,你可能会因为这么多大的数组而导致堆栈溢出

要执行此操作,请尝试以下代码:

#include <iostream>

int main(int argc, char* argv[])
{
int sarr2d[5][10];
typedef int dimension[10];
dimension* arr2d = new dimension[5];

for(int i = 0; i < 5; i++)
{
    for(int j = 0; j < 10; j++)
    {
        sarr2d[i][j] = i*j;
    }
}

for(int i = 0; i < 5; i++)
{
    for(int j = 0; j < 10; j++)
    {
        arr2d[i][j] = i*j;
    }
}

// print it out
for(int i = 0; i < 5; i++)
{
    for(int j = 0; j < 10; j++)
    {
        std::cout << arr2d[i][j] << " ";
    }
    std::cout << "\n";
}

delete [] arr2d;
return 0;
}
#包括
int main(int argc,char*argv[])
{
int sarr2d[5][10];
typedef int-dimension[10];
尺寸*arr2d=新尺寸[5];
对于(int i=0;i<5;i++)
{
对于(int j=0;j<10;j++)
{
sarr2d[i][j]=i*j;
}
}
对于(int i=0;i<5;i++)
{
对于(int j=0;j<10;j++)
{
arr2d[i][j]=i*j;
}
}
//打印出来
对于(int i=0;i<5;i++)
{
对于(int j=0;j<10;j++)
{

std::cout堆栈的大小比堆的大小小得多。使用
new
malloc
分配的任何内容都会放在堆上,但如果不小心,可以非常快速地填充堆栈

考虑到这个网站,你可能会因为这么多大的数组而导致堆栈溢出

要执行此操作,请尝试以下代码:

#include <iostream>

int main(int argc, char* argv[])
{
int sarr2d[5][10];
typedef int dimension[10];
dimension* arr2d = new dimension[5];

for(int i = 0; i < 5; i++)
{
    for(int j = 0; j < 10; j++)
    {
        sarr2d[i][j] = i*j;
    }
}

for(int i = 0; i < 5; i++)
{
    for(int j = 0; j < 10; j++)
    {
        arr2d[i][j] = i*j;
    }
}

// print it out
for(int i = 0; i < 5; i++)
{
    for(int j = 0; j < 10; j++)
    {
        std::cout << arr2d[i][j] << " ";
    }
    std::cout << "\n";
}

delete [] arr2d;
return 0;
}
#包括
int main(int argc,char*argv[])
{
int sarr2d[5][10];
typedef int-dimension[10];
尺寸*arr2d=新尺寸[5];
对于(int i=0;i<5;i++)
{
对于(int j=0;j<10;j++)
{
sarr2d[i][j]=i*j;
}
}
对于(int i=0;i<5;i++)
{
对于(int j=0;j<10;j++)
{
arr2d[i][j]=i*j;
}
}
//打印出来
对于(int i=0;i<5;i++)
{
对于(int j=0;j<10;j++)
{

std::cout如果您确实想要堆栈上的项目,如果您使用的是Microsoft编译器,则可以使用/F开关,或者您可以在链接程序时指定堆栈的大小。我可能会使用/F开关。但是,这可能会占用堆空间(同时限制堆栈和堆)

以下是MSDN上有关增加堆栈大小的链接:


如果您确实想要堆栈上的项目,如果您使用的是Microsoft编译器,则可以使用/F开关,或者您可以在链接程序时指定堆栈的大小。我可能会使用/F开关。但是,这可能会占用堆空间(限制堆栈和堆在一起)

以下是MSDN上有关增加堆栈大小的链接:


堆栈大小通常被限制为一个相当小的默认大小。如果您需要一个更大的堆栈,通常可以告诉链接器(以系统特定的方式)

在这种特殊情况下,您还可以选择在
main
函数之外的静态内存空间中分配变量。该空间通常比堆栈空间大得多

int fract[501][501];
int rfract[501][501];
int nufract[501][501];
int nurfract[501][501];
int snufract[501][501];
int snurfract[501][501];

int main() {
    cout << "FIRST LINE";

    system("PAUSE");
    return 0;
}
int fract[501][501];
国际合同[501][501];
国际货币基金组织[501][501];
国际货币基金组织[501][501];
int snufract[501][501];
int snurfract[501][501];
int main(){

cout堆栈大小通常被限制为一个相当小的默认大小。如果您需要一个更大的堆栈,您通常可以告诉链接器(以系统特定的方式)

在这种特殊情况下,您还可以选择在
main
函数之外的静态内存空间中分配变量。该空间通常比堆栈空间大得多

int fract[501][501];
int rfract[501][501];
int nufract[501][501];
int nurfract[501][501];
int snufract[501][501];
int snurfract[501][501];

int main() {
    cout << "FIRST LINE";

    system("PAUSE");
    return 0;
}
int fract[501][501];
国际合同[501][501];
国际货币基金组织[501][501];
国际货币基金组织[501][501];
int snufract[501][501];
int snurfract[501][501];
int main(){

您可以尝试在运行时分配它们;堆通常比堆栈大得多。您可以尝试在运行时分配它们;堆通常比堆栈大得多。