我写了一个程序,调用了一个dll。
dll接口为
size_t fun(const vector<string>& vec);
只是传递了一个vecotr的引用,当dll为release,调用的应用程序为debug版时,居然发现结果不一致。
比如:
string str[] = {"111","222","333"};
vector<string> vec(str,str+3);
fun(vec);
dll:
size_t fun(const vector<string>& vec)
{
cout<<vec.size()<<endl;
}
很明显vec的size为3,但是dll中的输出居然为4.
我测试了下,release 版本的应用程序调用 debug版本的dll 或者 debug版本的应用程序调用 release版本的dll都会有问题。release 版本的应用程序调用 debug版本的dll 甚至会崩溃(崩溃在_Orphan_range 函数中 的 if((*_Pnext)->_Ptr < _First 那一行)。
而dll和程序相同设置(均为debug或release)则没有问题。
太奇怪了。