2013-02-25 105 views
1

我想從數據庫中使用語句ID = r-> getInt(1)和stat = r- > getString(10)我已經將ID聲明爲int,並將stat作爲字符串聲明。 其中第一個字段是包含值1的ID,第10個字段是包含值「A」的狀態。 如果我嘗試只提取ID,我的代碼工作正常。否則,當我嘗試獲取狀態以及運行代碼時,出現下面提到的錯誤:*** glibc檢測到*** ./test:free():無效指針:

*** glibc detected *** ./test: free(): invalid pointer: 0x000000001c3f5a60 *** 
======= Backtrace: ========= 
/lib64/libc.so.6[0x3d23e71684] 
/lib64/libc.so.6(cfree+0x8c)[0x3d23e74ccc] 
/usr/lib64/libstdc++.so.6(_ZNSsD1Ev+0x3a)[0x3d28a9dc1a] 
./test[0x401837] 
./test(__gxx_personality_v0+0x310)[0x401120] 
/lib64/libc.so.6(__libc_start_main+0xf4)[0x3d23e1d8b4] 
./test(__gxx_personality_v0+0x89)[0x400e99] 

請幫忙。

添加什麼,我想實現只是基礎知識:

char loader_session[10]; 
char sql_query[500]; 
int ID; 
string STATUS; 
string CURRENT_CNT_FILE 

env = Environment::createEnvironment (Environment::DEFAULT); 
conn = env->createConnection(user, passwd, db); 
strcpy(loader_session,"TEST"); 
sprintf(sql_query,"SELECT ID, SESSION_NAME, SRC_SUCCESS_PATH, SRC_CDR_PATH, LOG_FILE, CURRENT_CNT_FILE, LOG_MAX_FILE_CNT, LOG_MAX_FILE_SIZE, PROCEDURE_NAME, STATUS, ERROR_CDR_PATH, LOCK_FILE_PATH FROM TEST_DB WHERE SESSION_NAME = '%s'",loader_session); 
Statement* const s = conn->createStatement(sql_query); 
s->setPrefetchRowCount(10); 
ResultSet* const r = s->executeQuery(); 
while (r->next()) 
    { 

    ID  = r->getInt(1); 
    STATUS = r->getString(10); 
    CURRENT_CNT_FILE = r->getString(6); 
    } 
+1

請與我們分享您的部分源代碼。如果沒有它,恐怕我們不能幫助並指出你的錯誤。 – 2013-02-25 14:09:52

+0

@MikhailKalashnikov:請參考添加的代碼。 在此先感謝。 – sajal 2013-02-25 17:33:31

回答

0

好吧,我得到了我的問題是治標不治本。只需將MALLOC_CHECK_設置爲0,我就不會收到錯誤,並且代碼運行良好。不知道這個副作用,但截至目前,它工作正常。

相關問題