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