论局部变量大小(悬关)
  • 板块灌水区
  • 楼主WZWZWZWY
  • 当前回复12
  • 已保存回复12
  • 发布时间2023/8/9 07:30
  • 上次更新2023/11/3 05:04:24
查看原帖
论局部变量大小(悬关)
704668
WZWZWZWY楼主2023/8/9 07:30

百度过,只是……没找到具体的解释

#include <iostream>
using namespace std;
void dfs(int x){
	if (x > 43338)return;//再大一点就会爆炸(真的)
	int a;//注释掉这里也没关系
	dfs(x+1);
}
int main(){
	dfs(1);
}

这个刚好可以运行,但改成43339内存就裂开………

把x设置为全局变量效果也是相同的:

#include <iostream>
using namespace std;
int x=1;
void dfs(){
	if (x > 43338)return;//再大一点就融化了
	int a;
	++x;
	dfs();
}
int main(){
	dfs();
}

但是,局部变量的数组却最多能开到520060个

#include <iostream>
using namespace std;
void dfs(){
	int a[520060];
}
int main(){
	dfs();
}

然而……循环中的变量似乎一下就会被销毁。

#include <iostream>
using namespace std;
int main(){
	for (int i = 1; i <= 1000000; i++)int a[520059];
}

所以,为什么函数中定义的int变量的数量和数组的大小不一样呢?(可能是void也占用内存……?)

还有for循环的局部变量用完就废弃,为什么函数的局部变量不是?

QAQ

2023/8/9 07:30
加载中...