我刚刚遇到一个问题,当本地对象试图调用一个非常简单的过程时,HPUX 上的线程 C++ 程序中的堆栈溢出导致了 SEGV_MAPERR。我困惑了一会儿,但幸运的是我和一个认识到这是堆栈大小问题的人交谈,我们能够通过增加线程可用的堆栈大小来解决这个问题。
我如何识别堆栈何时溢出? Windows/linux/hpux 上的症状是否不同?
最佳答案
假设您不在一个会停止您的应用程序并说“堆栈溢出”的平台上,我怀疑您会看到与任何类型的缓冲区溢出相同的行为。堆栈只是为您的程序预分配的另一 block 内存,如果您超出了这些范围……那么祝您好运!谁知道你会踩到什么!
您可以覆盖 CPU 的温度读数,它可能是您输入给 Larry 的电子邮件,也可能是内核被锁定的位,导致有趣的死锁情况!谁知道。
至于 C++,并没有说明堆栈应该如何相对于内存中的其他东西进行布局,或者这个东西甚至需要是一个堆栈!
关于c++ - C++ 程序中堆栈溢出的症状是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562973/