我正在使用Ansi C和sqlite3_get_table
;一切正常,除了我无法访问作为指向数组的指针传递的查询结果向量。这是我的代码......
char **sql_results;
sqlite3_get_table(open_database, sql_query,
&sql_results, &RecordCount, &ColumnCount, &error_msg);
for (int i = 0; i <= (RecordCount + 1)* (ColumnCount); i++)
printf("%10d %10s\n",i, sql_results[i]); //get "EXC BAD ACCESS" message
如何修复sql_results[i]
?感谢。
答案 0 :(得分:2)
我认为这篇文章:
i <= (RecordCount + 1)* (ColumnCount)
导致你的问题。你也试过吗
i < (RecordCount + 1)* (ColumnCount)
答案 1 :(得分:1)
您应该检查sqlite3_get_table
返回的值是否为SQLITE_OK
;如果不是,则访问结果表是不安全的。
您还应该知道这是一个deprecated API。你应该添加一个sqlite3_free_table
的调用来释放内存;现在你似乎有内存泄漏(或者你已经这样做了,但拒绝向我们展示)。