结构数组的最大大小

Maximum size of array of structs

本文关键字:数组 结构      更新时间:2023-10-16

我尝试使数组的结构。结构包含两个二维数组(100x100)。如果我想使数组的30或更多的结构错误发生-"分割故障"。我使用CodeBlocks与MINGW编译器。代码:

struct gracze
{
    int pole1[100][100];
    int pole2[100][100];
};

int main()
{
    gracze gracz[30];
return 0;
}

您正在分配大约2.4到4.8兆的堆栈空间。

IIRC, MinGW的默认堆栈大小大约是2 MB,也就是说,你超过了你的堆栈空间,需要增加它——如果你真的想要这么大的堆栈分配,而不是动态分配内存:

#include <stdlib.h>
int main()
{
    gracze * gracz;
    if ( ( gracz = malloc( sizeof( gracze ) * 30 ) ) != NULL )
    {
        // stuff
        free( gracze );
    }
    return 0;
}

如果这不是你想要的,这个SO问题涵盖了"如何"增加堆栈空间(gcc -Wl,--stack,<size>)。

在Linux上,也有ulimit -s设置的全局限制。

这个问题涵盖了Windows/VisualStudio (editbin /STACK:reserve[,commit] program.exe)。

您正在对堆栈进行大量分配。要么增加堆栈大小,要么以其他方式分配对象(静态或malloc)。

devc++ (Mingw)栈限制