小幸运单手钢琴简谱:如何在C++动态库中释放调用动态库程序中生成的指针?

来源:百度文库 编辑:高考问答 时间:2024/04/28 02:17:20
我在程序中定义了一个BYTE*的指针,并分配了内存,接着调用一个动态库中的函数,把这个指针传入动态库,但在动态库中,我只要一运行free(),想释放这个指针,就出现错误。但如果这个函数不放在动态库,而是放在程序中就不会出错,请教高手,这是怎么中回事?难道动态库中不能释放不是在动态库中生成的指针?
试了gundaml的方法,不行。还有没有别的建议?
因为在DLL中我需要改变分配的内存区的大小,所以只有先释放,再重新申请,如果我不这样做,那么有什么办法可以解决在DLL中改变不是在DLL中分配的内存区的大小这个问题?

1、我的经验是:谁申请,谁释放。
2、如果一定要这么做,可以在你的“程序”中增加一个callback函数,让dll调用。
3、如果泄漏不大,也可以不释放,哈哈。

我用的是VC6,在DLL的Settings..->C/C++->Code Generation->Use run-time library,选成Debug Multithreaded DLL。如果是Release版,选成Multithreaded DLL

我用的是VC6,在DLL的Settings..->C/C++->Code Generation->Use run-time library,选成Debug Multithreaded DLL。如果是Release版,选成Multithreaded DLL

用GlobalAlloc分配内存,
用GlobalFree来释放就可以了.