什么是堆栈重新分配以及何时发生?
What is stack reallocation and when does it happen?
据说你stack reallocation can happen。我不明白这一点。我认为 setjmp/longjmp 的全部意义在于保存堆栈,并且在 longjmp 返回时有效。该评论似乎暗示可以移动整个堆栈。这会抵消所有指针,所以我明白为什么应该避免它。但是什么时候堆栈重新分配发生?没听过这个词
关于堆栈重新分配的评论似乎只适用于 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
将一如既往地安全使用。
据说你stack reallocation can happen。我不明白这一点。我认为 setjmp/longjmp 的全部意义在于保存堆栈,并且在 longjmp 返回时有效。该评论似乎暗示可以移动整个堆栈。这会抵消所有指针,所以我明白为什么应该避免它。但是什么时候堆栈重新分配发生?没听过这个词
关于堆栈重新分配的评论似乎只适用于 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
将一如既往地安全使用。