Я пытаюсь получить имя столбца из таблицы оракула, используя класс MetaData.Я получаю вектор объектов MetaData из ResultSet, а затем зацикливаюсь на них, выполняя функцию getString () для каждого элемента, проблема в том, что на второй итерации, при выходе из цикла, чтобы начать новую итерацию, происходит сбойCrtIsValidHeapPointer Assertion.
/*
* 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, действительно действительны, поэтому я подозреваю, что моя куча из DLL внешнего API не совпадает с кучей 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 = Windows, VS2008, Oracle 11.2