我有一个加载 python35.dll 的应用程序。使用 python API PyImport_AddModule 运行 py 文件。并使用 PyDict_DelItemString 删除模块。py 文件中有一个全局变量。调用 PyDict_DelItemString 删除模块时,全局变量不会被破坏。调用 Py_Finalize 时,全局变量被销毁。太晚了。这会导致内存泄漏。因为 Py_Initialize 是在应用启动时调用的,所以 Py_Finalize 是在应用关闭时调用的。
但是用python33.dll没问题,调用PyDict_DelItemString删除模块时可以销毁全局变量。
如何解决问题?有解决方法吗?我需要使用 python35.dll 并希望在调用 PyDict_DelItemString 删除模块时可以自动释放模块中的全局变量。
这是python测试代码:
class Simple:
def __init__( self ):
print('Simple__init__')
def __del__( self ):
print('Simple__del__')
simple = Simple()