2015-09-06 60 views
1

sqlite3_get_table返回一個指針,並且該指針必須在使用後釋放。sqlite3_get_table中的結果指針

有3種情況:

  • 無效請求
  • 空表
  • 正常返回

在第三的情況下,很顯然,該表必須與sqlite3_free_table()被釋放。

在第一和第二種情況下,文檔不會說是否分配了表(並且必須釋放)。

是否有人知道答案,或者我應該使用這樣的:

ptr = NULL; 
rc = sqlite3_get_table(db, &ptr, &nRow, nCol,perr); 
... 
if(ptr != NULL) sqlite3_free_table(ptr); 

PS:我已經知道sqlite3_get_table()將被棄用。

回答

0

sqlite3_get_table()將不再使用;它已棄用。

確切的行爲並不重要,因爲沒有人會這麼魯莽以至於使用這個函數編寫新代碼。

但如果你想知道的細節出於好奇:

  • sqlite3_get_table()總是返回一個有效的指針,或NULL。
  • sqlite3_free_table()與一個有效的指針或NULL一起工作。