百度过,只是……没找到具体的解释
#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