C++跨动态库dll内存分配与释放问题总结
结论:如果两个dll(或者exe调用dll)的CRT链接为MD,则可以跨动态库分配和释放;如果一个是MT,另一个是MD则会有问题(比如崩溃)。利用虚函数的动态绑定技术,动态绑定分配释放内存的new和delete等,可以解决上述1的问题,例如shared_ptr的实现。但如果shared_ptr包装是vector等类型,在调用和被调用中都涉及到vector的修改的话,仍然会有问题,因为两个地方都会有释放和分配。详情见以下两个文章:跨dll的内存分配释放问题智能指针shared_ptr为何可以实
复制链接