C++ 结构数组的最大大小

C++ 结构数组的最大大小,c++,arrays,struct,mingw,C++,Arrays,Struct,Mingw,我尝试创建结构数组。结构包含两个二维数组(100x100)。如果我想制作30个或更多结构的数组,就会出现错误——“分段错误”。我正在使用MINGW编译器的代码块。 代码: 您正在堆栈上进行大量分配。增加堆栈大小,或者以其他方式(静态或malloc)分配对象 看 您正在分配大约2.4到4.8兆字节的堆栈空间 IIRC,MinGW的默认堆栈大小约为2MB,即您超出了堆栈空间,需要增加它——如果您确实想进行如此大的堆栈分配,而不是动态分配内存: #include <stdlib.h> i

我尝试创建结构数组。结构包含两个二维数组(100x100)。如果我想制作30个或更多结构的数组,就会出现错误——“分段错误”。我正在使用MINGW编译器的代码块。 代码:


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


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

IIRC,MinGW的默认堆栈大小约为2MB,即您超出了堆栈空间,需要增加它——如果您确实想进行如此大的堆栈分配,而不是动态分配内存:

#include <stdlib.h>

int main()
{
    gracze * gracz;
    if ( ( gracz = malloc( sizeof( gracze ) * 30 ) ) != NULL )
    {
        // stuff
        free( gracze );
    }
    return 0;
}
#包括
int main()
{
格拉茨*格拉茨;
如果((gracz=malloc(sizeof(gracze)*30))!=NULL)
{
//东西
免费(格拉茨);
}
返回0;
}
如果这不是您想要的,那么将介绍如何增加堆栈空间(
gcc-Wl,--stack,

在Linux上,还有由
ulimit-s
设置的全局限制


介绍Windows/VisualStudio(
editbin/STACK:reserve[,commit]program.exe
)。

此标题很可能与问题无关。您需要显示您的代码。您还应该使用调试器获取回溯。如果源代码只包含结构的定义和带有数组的
main()
,是否会发生这种情况?如果是,请向我们显示代码。如果不是,为什么不呢?一般来说,指针和数组大小的限制是环境特定的(64位vs 32位),与C++本身无关。您的结构大约需要4*100*100*2*30=240000-2MB。您是否将堆栈大小设置为低于此值的值?我没有更改堆栈限制我使用了此解决方案,并且一切正常。谢谢
#include <stdlib.h>

int main()
{
    gracze * gracz;
    if ( ( gracz = malloc( sizeof( gracze ) * 30 ) ) != NULL )
    {
        // stuff
        free( gracze );
    }
    return 0;
}