2015-09-06 61 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一起工作。