struct MemBlock {
char mem[1024];
MemBlock operator*(const MemBlock &b) const {
return MemBlock();
}
} global;
void foo(int step = 0) {
if (step == 10000)
{
global = global * MemBlock();
}
else foo(step + 1);
}
int main() {
foo();
return 0;
}
プログラム受信信号 SIGSEGV、セグメンテーション違反。0x08048510 in foo (step=4000) at t.cpp:12 12 void foo(int step = 0) {
MemBlock() インスタンスはまだ呼び出されていませんが、大量のスタック メモリを消費しているようです (gdb 情報を確認してください)。
代わりに使用global = global * global
すると、プログラムは正常に終了します。
内部のメカニズムを説明できる人はいますか?