场景:工作中遇到的一个问题,exe调用dll,其中有一个接口定义为int func( vector &Vec)形式,exe内部定义一个容器传参进dll,dll通过接口引用容器,Vec.push_back(info)时出现报错:
此时断点调试会发现入参后,Vec的size大小很大,很明显越界
后面查找了很多资料,才找到问题所在:
是因为vector在exe和dll之间传递的时候,由于在dll内可能对vector插入数据,而这段内存是在dll里面分配的,exe无法知道如何释放内存,从而导致问题。而改成const类型后,编译器便知道dll里不会改变vector,从而不会出错。
解决办法:
1.传递vector指针
2.传递const vector。
参照资料:https://www.cnblogs.com/lidabo/archive/2013/09/04/3300327.html