Programming/Database
OCCI 를 이용한 DB 조회 시 heap corruption 에러 발생
cancelmind
2011. 8. 25. 16:25
stmt = conn->createStatement ("SELECT id, name FROM tb_user");
ResultSet *rs = stmt->executeQuery();
try{
while (rs->next())
{
cout << "id: " << rs->getInt(1) << endl;
cout << "jname: " << rs->getString(2) << endl;
}catch(SQLException ex)
{
cout<<"Exception thrown for displayRow"<<endl;
cout<<"Error number: "<< ex.getErrorCode() << endl;
cout<<ex.getMessage() << endl;
}
물론 Enviroment 와 Connection은 연결 된 상태
getString 시 읽어올 데이터 크기가 15byte를 초과할 경우 heap corruption 이 발생되면서 프로그램이 죽어버림
7시간동안 구글링 해 본 결과 std::string 이 죽을 때 이중으로 delete 해서 그렇단다.
맞는 말인지는 모르겠고...
찾아보면 mysql 쪽도 동일한 문제가 있는데 그건 /MT or /MD 옵션이 안맞아서 그렇다더군..
여튼 occi 로는 답이 없다.
occi 말고 oci로 코딩해야겠다..