如何在dll中释放内存(VC ) 500分,限这个星期。(200分)

  • 主题发起人 主题发起人 Crane
  • 开始时间 开始时间
C

Crane

Unregistered / Unconfirmed
GUEST, unregistred user!
我在主进程new一个对象,对象中也有在堆中生成的对象或变量。然后我把它的地址
传给dll中一个指向指针的指针。这个指针会在dll中delete掉这个对象,重新renew一个,
这是逻辑需要。但是可能由于dll和进程heap不一样。所以它无法delete掉这个对象。而
造成异常,请问有什么方法可以让dll操作进程堆上的内存。
200分讨论,300分给功臣。
 
写个回调函数给dll调用,在回调函数中释放,回调函数是主进程中的。
 
你试过吗?我觉得好象不行。方法代码并不知道现在在哪个实体中啊。
我有不少变量要在dll中删掉怎么办?而且如果是我在dll中申请的内存
在主进程也释放不了啊。这时候传回调就不方便了。
 
使用完后,由主进程删除并重建后传给DLL

或同时传入两个对象,一个是原来的,另一个是由主进程“新建“的,DLL使用完后由主进程删除第一个。
 
记住一点: 谁分配的内存由谁负责释放 就不会有问题了。
主程序分配的内存,一定要由主程序的代码来释放,故你可以在DLL中调用主程序的一个
过程来释放。至于说不知道是哪个实例,你可以把要释放的对象传回去的。
DLL中的情况也是一样,由主程序调用DLL中的释放代码。
 
还是靠回调解决了,没办法。
 

Similar threads

后退
顶部