什么是堆栈重新分配以及何时发生?

时间:2015-02-14 20:34:50

标签: c c99 longjmp setjmp static-memory-allocation

据说你是stack reallocation can happen。我不明白这一点。我认为setjmp / longjmp的重点是保存堆栈,并且当longjmp返回时它会有效。评论似乎表明可以移动整个堆栈。这将抵消所有指针,所以我明白为什么应该避免它。但什么时候堆栈重新分配发生?我以前从未听过这个词。

1 个答案:

答案 0 :(得分:1)

似乎关于堆栈重新分配的注释仅适用于coro堆栈,而不适用于通用C堆栈

通常不会将通用C堆栈传递给函数,只能将您自己的实现传递给函数,如下所示:

 /*
  * Create a new coroutine from the given function, and with the
  * given stack.
  */
 EXPORT
 extern coro coro_new(_entry fn);

因此,setjmp / longjmp可以像往常一样安全使用。