我的程序崩溃,然后一个字符串对象被删除,我想因为我使用的是针对VS 2010编译的oracle库,而我正在使用VS 2015.下面是它崩溃的那一行:强制复制构造函数而不是移动构造函数
string f1 = cObj.getString(MetaData::ATTR_NAME);
我得到一个正常的字符串,我可以使用它,但是当它超出范围崩溃试图解除分配。 现在,在阅读关于使用旧版本的DLL时,我发现如果分配发生在该库内,我们应该始终将内存释放分配给DLL。我想这里发生的是move构造函数get的调用,所以最后它试图释放由oracle dll分配的内存的字符串。
所以我的问题是,有没有一种方法可以在这种情况下显式调用字符串的复制构造函数?
可能的CRT不匹配 –
如果明确使用赋值,它是否工作?如果不是,你的问题可能会在别处。 –
你可以用'string f1 = const_cast(cObj.getString(MetaData :: ATTR_NAME);'强制拷贝构造函数;'但是我怀疑这样可以修复你的版本不匹配的问题 –
nwp