我的程序崩潰,然後一個字符串對象被刪除,我想因爲我使用的是針對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