我想從一個使用MetaData類的oracle表中獲取列的名稱。我從ResultSet中獲得了一個MetaData對象的向量,然後循環它們在每個項目上執行getString()函數,問題是在第二次迭代中,當退出循環開始新的迭代時,它崩潰在給我CrtIsValidHeapPointer聲明。CrtIsValidHeapPointer問題與Oracle OCCI元數據:: getString
/*
* If this ASSERT fails, a bad pointer has been passed in. It may be
* totally bogus, or it may have been allocated from another heap.
* The pointer MUST come from the 'local' heap.
*/
_ASSERTE(_CrtIsValidHeapPointer(pUserData));
通過pUserData所指向的數據實際上是有效的,所以我懷疑從外部API DLL我的堆是不一樣的CRT堆,問題是我該如何解決這個問題?
我的代碼:
std::vector<oracle::occi::MetaData> data = res->getColumnListMetaData();
for (std::vector<oracle::occi::MetaData>::iterator iter = data.begin(); iter != data.end(); iter++)
{
//Crash on second iteration after this statement
std::string s = (iter->getString(oracle::occi::MetaData::ATTR_NAME));
int i = iter->getInt(oracle::occi::MetaData::ATTR_DATA_TYPE);
std::cout << i << std::endl;
}
沒有任何人有任何建議或有沒有人有這個問題,解決它?
OS =視窗,VS2008,甲骨文11.2