c++跨动态库DLL的内存分配与释放问题 先说结论: 1、如果两个DLL(或者EXE调用DLL)的CRT链接均为MD,则可以跨动态库分配和释放,如果一个是MT,另外一个是MD则会有问题。 2、利用虚函数的动态绑定技术,动态绑定分配释放内存的new和delete等,可以解决这个问题,例如shared_ptr。但如果shared_ptr包装是vector等类型,在调用和被调用中都涉及到vector的修改的话,仍然会有问题,因为两个地方都会有释放和分配。 似乎最好的办法还是用原始指针加数组长度的方式传递。 参见下面两个文章。 1、跨DLL的内存分配释放问题 2、晓说智能指针shared_ptr为何可以实现跨模块分配和释放内存