结构数组的最大大小

时间:2015-09-01 15:48:48

标签: c++ arrays struct mingw

我尝试制作结构数组。 Struct包含两个二维数组(100x100)。如果我想制作30个或更多结构的数组,则会发生错误 - “分段错误”。我正在使用CodeBlocks和MINGW编译器。 代码:

<a href="#" id="exitLink" data-toggle="modal" data-target="#endsession_confirm">Exit</a>

<div class="modal fade in" id="endsession_confirm" tabindex="-1" role="dialog" aria-labelledby="endsession_confirm" aria-hidden="false">

2 个答案:

答案 0 :(得分:1)

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

IIRC,MinGW的默认堆栈大小约为2 MB,即你超出了堆栈空间,并且需要增加它 - 如果你确实想要使用如此大的堆栈分配而不是例如动态分配内存:

#include <stdlib.h>

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

如果那不是你想要的,this SO question涵盖增加堆栈空间的“方式”(gcc -Wl,--stack,<size>)。

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

This SuperUser question涵盖了Windows / VisualStudio(editbin /STACK:reserve[,commit] program.exe)。

答案 1 :(得分:0)

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

DevC++ (Mingw) Stack Limit