关于DLL内存释放的问题


dll中有一个比较复杂的函数process,里面申请了较大的内存空间,而这个函数是封装在dll中,现在主程序通过多线程的方式调用这个函数,当主程序强制终止子线程时,函数process中申请的空间会造成内存泄露吗,在dll中分配的空间何时会自动回收?

内存管理 VC dll

youiou 12 years, 3 months ago

看问题:
@在Dll中malloc的内存在exe中释放会出错
@初始化vector并传引用到DLL中,DLL中为该引用添加节点,vector内存释放时会报堆栈错误,想搞明白原因

如果在dll中动态申请内存,应该是不会释放的,会发生内存泄露,没有自动回收的说法,除非在应用程序退出的时候这部分存储才会被回收。

强制终止子线程不可取。
1: 可以考虑主线程设置标志位或者发送终止消息给子线程,子线程做适当清理后退出。
2: 复杂的process独立为一个进程存在,终止进程之后存储会被回收,这样安全一点。

碎月葬影233 answered 12 years, 3 months ago

Your Answer