我想从一个使用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