即使Python 2和3中的引用计数都不为0,您也可以强制取消分配对象。
这两个版本都使用该ctypes模块来执行此操作。
警告:这样做将使您的Python环境不稳定,并且容易崩溃而无法回溯!使用此方法还可能带来安全问题(极少发生),只有在确保确定不会再引用的情况下才释放对象。曾经。
import ctypes deallocated = 12345 ctypes.pythonapi._Py_Dealloc(ctypes.py_object(deallocated))
import ctypes, sys deallocated = 12345 (ctypes.c_char * sys.getsizeof(deallocated)).from_address(id(deallocated))[:4] = '\x00' * 4
运行后,对现在释放的对象的任何引用都将导致Python产生未定义的行为或崩溃-没有回溯。垃圾收集器没有删除该对象可能是有原因的...
如果您取消分配None,则会Fatal Python error: deallocating None在崩溃前收到一条特殊消息。