使用动态库(dll/dylib)进行内存管理

Mir*_*pas 1 c++ dll memory-management dylib

在应用程序中分配内存并在从dll/dylib调用的函数中释放它是否有任何问题?

但是要从dll/dylib中为函数分配内存并在调用者应用程序中释放它?

Rob*_*ker 5

对于静态库,它通常不是问题,但对于动态库通常不是一个好主意.特别是对于项目之间共享的库.

问题是您需要确保内存分配函数(new/delete,malloc/free)在您的调用代码和动态库之间完全匹配.例如,如果您将C运行时与可执行文件静态链接,但动态库是动态链接的(反之亦然),那么您可以为可执行文件和动态库运行malloc的单独代码.

为了避免任何问题,动态库通常会公开自己的alloc和free例程以保证一致性.