重複の可能性:
スタック オーバーフロー エラーとは?
以下のコードを見てください。
#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 秒間機能し、自動的に閉じます。行は印刷されませんhellow
。その理由は何ですか?Windows タスク マネージャーでは、アプリケーションで使用されるメモリが増加することがわかります。ただしx
、メイン関数内のみにメモリを割り当てているため、関数はメモリをx
何度も割り当てます。このような状況はメモリ リークと呼ばれますか? その場合、それを防ぐためにどの行を追加する必要がありますか?
hellow
以下のようにコードを変更すると、関数を何度も実行せずに単語が表示されます。
void leave(){
leave();
}
int main(){
leave();
cout<<"hellow";
}
これらの状況をどのように説明しますか?