首页 » 技术SOS » 嵌入式系统 » 中间件和软件库 » 请教一个堆栈溢出的问题?

请教一个堆栈溢出的问题?

菜鸟
2007-10-26 23:16:30
请问该如何检查堆栈是否溢出呢? 具体要怎么得知当前的堆栈大小,以及如何得知已经使用了多少呢? 我用的调试器可以观察全局变量,那么我应该把哪个值赋给这个全局变量观察堆栈的使用情况呢? 请各位高手指点一下小弟好吗?非常谢谢!
关键词: 堆栈, 溢出  

最佳回复

高工
2007-10-26 23:22:31
1楼

不知道你指的堆栈是真实的堆栈还是函数调用。 前者很容易,只要通过堆栈头就可以一路向下找到堆栈尾,用个变量数目统计就可以了。 至于函数调用只是用了一个比喻而已,这个堆栈是由编译器完成的,这可能是你调用函数嵌套太多,或者陷入调用的死循环,从而引起堆栈溢出。 至于检查堆栈是否溢出,不管你是以上哪种原因引起的,一旦堆栈溢出,程序就会崩溃,即使捕捉异常也无济于事,合理使用内存及编码是防止堆栈溢出的唯一途径。