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