#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),则声明将失败并出现分段错误。
谁能告诉我原因?
非常感谢!
答案 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