是线程还是进程导致了stackoverflow错误

Is thread or process caused stackoverflow error

我对线程和进程的概念感到困惑。我有一些基本问题。

我知道进程为线程分配内存。线程是否占用所有进程内存?比如一个进程有1GB的栈内存,它有两个线程,那么每个线程有512MB的栈内存?

另一个问题是我运行一个程序并得到一个堆栈溢出错误。是'one'线程引起的还是进程引起的?如果一个线程导致栈溢出,是'use'另一个线程的栈内存还是直接报错

谢谢

Do threads occupy all process memory?

同一进程的线程共享进程的virtual address space。每个线程在进程的虚拟地址space中都有自己保留的栈区。在 Linux,每个线程的堆栈默认可以增长到 8MB。

Another question is that I run a program and get a stack overflow fault. Is it caused by 'one' thread or by the process?

是的。第一次堆栈溢出终止了整个过程。理论上,所有线程都可以同时导致自己的堆栈溢出,但这些事件将在内核中序列化,第一个将终止进程。