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,分段故障。 foo中的0x08048510(步骤= 4000)at t.cpp:12 12 void foo(int step = 0){
看起来MemBlock()实例虽然还没有被调用但是要花费很多堆栈内存(请查看gdb信息)。
当我使用时 global = global * global
相反,程序正常退出。
任何人都可以解释内在的机制吗?