如何解决是线程或进程引起stackoverflow错误
我对线程和进程的概念感到困惑。我有一些基本问题。
我知道该进程将内存分配给线程。线程会占用所有进程内存吗?例如,一个进程有1GB的堆栈内存,并且有两个线程,那么每个线程都有512MB的堆栈内存?
另一个问题是我运行一个程序并遇到堆栈溢出错误。是由“一个”线程还是由进程引起的?如果某个线程导致堆栈溢出,它将“使用”另一个线程的堆栈内存还是仅仅给出错误。
谢谢
解决方法
线程会占用所有进程内存吗?
同一进程的线程共享该进程的virtual address space。每个线程在进程的虚拟地址空间中都有自己的堆栈区。在Linux上,默认情况下,每个线程的堆栈可以增长到8MB。
另一个问题是我运行一个程序并遇到堆栈溢出错误。是由“一个”线程还是由进程引起的?
是的。第一次堆栈溢出将终止整个过程。从理论上讲,所有线程都可以同时导致自己的堆栈溢出,但是这些事件将在内核中序列化,第一个事件将终止进程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。