7

我将一些弱引用从 Python 传递到 C++ 类,但是当真实对象已经死时,C++ 析构函数正在积极尝试访问引用,显然它崩溃了......

是否有任何 Python C/API 方法来确定 Python 引用是否仍然存在或任何其他已知的解决方法?

谢谢

4

2 回答 2

4

来自Python C API文档:

PyObject* PyWeakref_GetObject(PyObject *ref)
返回值:借来的引用。
从弱引用 ref 返回被引用的对象。如果所指对象不再存在,则返回 None。2.2 版中的新功能。

于 2010-06-07T21:48:13.577 回答
3

如果你在弱引用上调用 PyWeakref_GetObject,它应该返回 Py_None 或 NULL,我忘了是哪个。但是您应该检查它是否返回其中之一,这将告诉您引用的对象不再存在。

于 2010-06-07T21:48:43.810 回答