如何在其中声明一个包含大型结构数组的结构

时间:2016-07-06 02:14:42

标签: c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define     MAXNO   1000

typedef struct
{
    int     n;
    char    site[4];
} stru;

typedef struct
{
    stru t1[MAXNO];
    stru t2[MAXNO];
} struall;

int main()
{
    struall tmp;
    int i;
    printf("%d\n",i);
    return 1;
}

大家好,我正在尝试声明一个结构变量,里面有两个结构数组成员。如果数组大小(MAXNO)很小,我可以成功编译。但是,如果数组大小非常大(将MAXNO定义为1000000),则声明将失败并出现分段错误。

谁能告诉我原因?

非常感谢!

1 个答案:

答案 0 :(得分:2)

你只能在机器堆栈上装上“哦 - 太多”。尝试:

struall* tmp = malloc(sizeof(struall));

在C中或C ++中的以下之一:

struall* tmp = new struall; // C++03
std::unique_ptr<struall> tmp{new struall}; // C++11
auto tmp = std::make_unique<struall>(); // C++14