嗯。没错,只管栈的。这本来也没问题。ucontext 当然是没问题的,不然早就从 POSIX API 里面删掉了。
c++20 则是把内存申请在堆里面。这就是为啥 c++20 是安全可靠的,而你弄的那一套栈切换是有问题的。如果那么简单,开源世界早就流行了。
再强调一遍,ucontext 没问题。是你弄的栈切换有问题。
解决办法也很简单,就是别用什么栈切换。
linux/openbsd 都提供了 mmap(MAP_GROWDOWN | MAP_STACK),你用这个申请栈空间,系统帮你做好了内存的自动增长。windows 也有这个功能。
【 在 ylh1969 的大作中提到: 】
: 那几个函数只管ucontext里的栈,不管来自哪里。
--
修改:hgoldfish FROM 110.84.121.*
FROM 110.84.121.*