python的类怎么释放_通过ctypes为返回到python的对象释放内存

我正在使用ctypes将MyDll中的c函数扩展为python.

from ctypes import cdll

libX = cdll.LoadLibrary("d:\\MyTestProject\\debug\\MyDll.dll")

进一步在.py文件中我有一个类,其方法通过ctypes调用MyDll中的函数.

Class MyTestClass:

def __init__(self,id):

libA.MyTestClassInDLL_new.restype = ctypes.c_void_p

self.obj = libA.MyTestClassInDLL_new(id)

相应的c函数MyTestClassInDLL_new已在MyDll中定义为 –

extern "C" __declspec(dllexport) void * MyTestClassInDLL_new(char* id)

{

pTestObject = new CMyTestClassInDLL(CString(id));

return (void *)pTestObject;

}

注意我使用new来在我的vc dll中实例化这个对象并返回指向它的指针.我在.py文件中将此函数的restype设置为ctypes.c_void_p.

我执行的脚本包含以下内容 –

testob = MyTestClass("5")

这很好用.我在这里获得的testob进一步用于调用其内部从MyDll调用c函数的方法.

但是,该对象是使用MyDll中的new创建的,并通过MyTestClassInDLL_new()函数返回.这个物体是如何被摧毁的?在某个地方我需要使用delete pTestObject,以便调用它的析构函数来执行清理并释放内存.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值