老鱼,这个即便使用shared_ptr也逃不过use-after-free的。
因为"存在lambda里面的那个shared_ptr"已经被析构了,而不是说"那个shared_ptr指向的对象"已经被析构了。
lambda coroutine的问题就在于c逃出了this的生命周期。
因为返回的c被注册到scheduler里面了,再次resume c的时候,包含this的lambda(lambda.__this)早已经析构了。
【 在 hgoldfish 的大作中提到: 】
: 没看太明白。capture 的问题为啥不用 shared_ptr<> ?
: 顺便说一下,协程不是那么简单的。capture this 的时候要特别小心。
: c = [this] {
: ...................
--
修改:allegro FROM 116.169.6.*
FROM 116.169.6.*