繁体   English   中英

结构数组的最大大小

[英]Maximum size of array of structs

我试图使结构数组。 结构包含两个二维数组(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)堆栈限制

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM