可能重复:
什么是堆栈溢出错误?
看下面的代码。
#include <iostream>
using namespace std;
void leave(double as){
cout<<as;
leave(as);
}
int main(){
double x=1234.5;
leave(x);
cout<<"hellow";
}
当这段代码执行时,他们是无法停止的。x
它应该一遍又一遍地打印该值。但实际上,这工作大约 20 秒并自动关闭。它不打印 line hellow
。原因是什么?在 Windows 任务管理器中,我可以意识到应用程序使用的内存会增加。但是我x
只在主函数中分配了内存,所以函数会x
一遍又一遍地分配内存。这种情况是否称为内存泄漏?如果是这样,应该添加哪些行来防止它?
如果我如下更改代码,它会显示单词hellow
,而无需一遍又一遍地执行该函数:
void leave(){
leave();
}
int main(){
leave();
cout<<"hellow";
}
如何解释这些情况?