在网上看到这样一个例子
關於 stack over flow 的問題。
void Example6_2();
void Example6_1()
{
Example6_2();
}
void Example6_2()
{
Example6_1();
}
void main()
{
Example6_1();
}
void Example6_1()
{
Example6_2();
}
void Example6_2()
{
Example6_1();
}
void main()
{
Example6_1();
}
首先就直接讓執行檔跑起來吧,打入g。
0:000> g
(10c4.934): Stack overflow - code c00000fd (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=cccccccc ebx=7ffdf000 ecx=00000000 edx=00000001 esi=00000000 edi=0013316c
eip=00f113b9 esp=00132fd8 ebp=00133098 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206
*** WARNING: Unable to verify checksum for WinDebugTest.exe
WinDebugTest!Example6_1+0x9:
00f113b9 53 push ebx
(10c4.934): Stack overflow - code c00000fd (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=cccccccc ebx=7ffdf000 ecx=00000000 edx=00000001 esi=00000000 edi=0013316c
eip=00f113b9 esp=00132fd8 ebp=00133098 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206
*** WARNING: Unable to verify checksum for WinDebugTest.exe
WinDebugTest!Example6_1+0x9:
00f113b9 53 push ebx
windbg 上面就顯示了"Stack overflow"。
为什么esp还没有耗尽,但是就已经stack overflow呢?好奇怪?