求解vs2010环境中release模式下死递归无终点有关问题

求解vs2010环境中release模式下死递归无终点问题
下述程序在debug模式下会因为栈满而退出,但是在release模式下一直运行,而且通过资源管理器观察,显示内存也没有占用多少。求大神解释啊。

#include <stdio.h>
int i;
void f()
{
char g[1024]="haha";
i++;
printf("%d\n",i);
f();
int k;
k = 1;   //避免尾递归
}
int main()
{
f();
return 0;
}
------解决方案--------------------
release模式下,某些递归,会优化成跳转,这样实际上递归就变成循环了。
另外
int k;
k = 1;   //避免尾递归


不能避免优化尾递归,因为编译器,可以识别
这两句是无用代码,可能会执行废码优化,从而被从代码中剔除。
因而,不能避免优化尾递归

这样,debug 下会因为堆栈耗尽而出错退出的代码;
在release 下,就成为永远循环的死循环代码了。