3

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

4

1 回答 1

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将一如既往地安全使用。

于 2015-08-04T17:46:44.553 回答