上下文切换导致堆栈溢出?

时间:2016-03-24 01:19:39

标签: c memory-management

由于每个线程都有自己的堆栈,在以下情况下会发生什么?

  1. 线程1进行非常深的递归调用
  2. 上下文切换到线程2,线程2在堆上增加了大量内存
  3. 上下文切换回线程1.
  4. 在第3步之后,堆栈和堆之间是否会发生冲突?当分配堆上的新块时,它会检查每个堆栈吗?

1 个答案:

答案 0 :(得分:0)

假设没有带页面保护的错误和逻辑内存转换:

1)为堆栈分配内存,并为堆分配内存。没有可以堆或堆栈的内存。

2)线程1的堆栈不会与堆冲突。

3)线程1可能需要扩展其堆栈,并且线程2引起的堆增长会阻止它。