2 kaoqibutaitou kaoqibutaitou 于 2015.07.27 21:31 提问

MFC中动态库项目与运行项目内存释放问题

图片说明图片说明

我在运行项目里面申请了类对象指针并存到了动态库项目下的map里面,现在需要释放内存,我现在把它放在了动态库的析构函数里面,程序在delete的时候,出现了第二章图里的问题。请教各位大神帮忙看看,想想解决八法,谢谢。

3个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.27 21:43

动态库析构的时候,对象指针是否合法,最好遵循谁分配谁释放,为什么不把对象指针放在主程序的map中,然后你需要的时候释放。

kaoqibutaitou
kaoqibutaitou 还是一样的。不知道运行库new出来的对象统一交给动态库来管理,应该如何进行释放指针对象?类似的有没有什么好的设计参考?
2 年多之前 回复
kaoqibutaitou
kaoqibutaitou 回复oyljerry: 先试试。谢谢。
2 年多之前 回复
oyljerry
oyljerry 回复kaoqibutaitou: 那你dll导出一个release函数等,需要的时候统一释放,而不是在析构中做这个
2 年多之前 回复
kaoqibutaitou
kaoqibutaitou 针对我这种情况有没有什么好的解决方案。谢谢。
2 年多之前 回复
kaoqibutaitou
kaoqibutaitou 主要是动态库是用来管理的,而运行程序可能会因为继承生成新的对象,然后将指针传给动态库来统一管理,基本上运行项目生成对象之后就统一交给动态库来管理了。
2 年多之前 回复
zuishikonghuan
zuishikonghuan   2015.07.28 10:01

MFC用dllmain吗,如果有可以在DLL_PROCESS_DETACH里卸载试试

zuishikonghuan
zuishikonghuan 回复kaoqibutaitou: dll被卸载时系统发给dll的通知,看这个:https://msdn.microsoft.com/en-us/library/windows/apps/ms682583.aspx
2 年多之前 回复
kaoqibutaitou
kaoqibutaitou 确实dllmain,但是不太懂。有没有什么教程。
2 年多之前 回复
zuishikonghuan
zuishikonghuan   2015.07.28 10:02

MFC用dllmain吗,如果有可以在DLL_PROCESS_DETACH里卸载试试

Csdn user default icon
上传中...
上传图片
插入图片