摘要:
最近在代码中用了这样一个DLL,采用静态加载方式使用,原型类似如下:XXX_API int xx_func(std::vector &xx_tbl, ..., ...);//代码中会用xx_tbl.push_back(xx);之类的代码向xx_tbl里面填充数据 但是却出现一个奇葩问题,每当调用这个DLL的程序退出时Debug版本有很大概率会崩溃在这个std::vector的析构函数上。 研究了好久才发现,当DLL中调用push_back函数时,其实std::vector的构造函数分配的内存是属于这个DLL的资源,当程序退出时会首先卸载这个DLL程序,那么与他相关的内存也随之被释放。. 阅读全文