关于结构体内数组元素过大引起的程序崩溃

1

大家好。

我的编译环境是VC++6.0

如下代码,如果代码正常运行,程序应该陷入无线循环。但他会崩溃,直接结束进程。如果把129501改成129500就没问题了。我想知道这个值的意义和原因。这样以后设计结构体时,才能更好地控制每个结构体内数组元素大小,不至于不小心超了,还一直找不到程序崩溃的原因。

# include <string>
using namespace std;

// 定义一个结构体
struct Node1
{
	double x[129501];	
};

// 主函数
int main(void)
{
	Node1 F;
	while(1){}
	return 0;
}
ava
花毛茛

2022-1-12

1

一般程序默认分配的栈空间确定的 1M 左右,超出就报错了。

vc6 可以在 project->settings ->link -> category(output) -> Stack allocations 下 Reserve 中设置,可以设置10M,比如输入 10485760, 单位字节

ava
xiongfj ◑◑

2022-1-12

谢谢xiongfj,改过之后就不会崩溃啦 - 花毛茛 2022-1-13
技术讨论社区