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

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