和gc无关,这个就是一个基本错误。在指针指向栈空间变量,但是它最后被回收,下面是一个Python等价示例。
class A:
def __init__(self, i):
print(f"init {type(i)}")
self.i = i
def p(self):
print('>>', self.i)
def __del__(self):
print('del', self)
def main():
a = []
for i in range(3):
ai = A(i)
a.append(lambda : ai.p())
for c in a:
c()
main()
【 在 MyWorkLife 的大作中提到: 】
:
: gc型语言转c++的一般会踩这个坑
:
: 【 在 Algoquant 的大作中提到: 】
: : 标 题: lambd表达式对已析构对象为啥不抛异常
#发自zSMTH@CDU.MP
--
FROM 117.23.183.*