C++ 调试断言失败:无效的空指针

C++ 调试断言失败:无效的空指针,c++,visual-studio-2010,sqlite,runtime-error,null-pointer,C++,Visual Studio 2010,Sqlite,Runtime Error,Null Pointer,我正在尝试编写一个测试程序,看看我从SQLite3数据库获取数据并将其存储在结构中的想法是否可行,但我在代码方面遇到了一些主要问题。在调试过程中,我不断遇到标题中的错误。以下是错误窗口的全文: 调试断言失败 文件:include\x字符串 电话号码:929 表达式:无效的空指针 获取有关程序如何导致断言的信息 失败,见Actudio.VisualC++文档。 下面是代码,我将用箭头(有问题的行: sqlite3_column_text(statement,i) 将返回未定义的值,因为当i等于s

我正在尝试编写一个测试程序,看看我从SQLite3数据库获取数据并将其存储在结构中的想法是否可行,但我在代码方面遇到了一些主要问题。在调试过程中,我不断遇到标题中的错误。以下是错误窗口的全文:

调试断言失败

文件:include\x字符串 电话号码:929

表达式:无效的空指针

获取有关程序如何导致断言的信息 失败,见Actudio.VisualC++文档。 下面是代码,我将用箭头(有问题的行:

sqlite3_column_text(statement,i)
将返回未定义的值,因为当i等于size时,它将超出范围

sqlite3_column_text函数iCol参数是C样式索引,以零开头,而您尝试从1开始获取列索引sql样式。将循环修复为:

for (i = 0; i < cols; i++)
(i=0;i我发现了问题所在。我回顾了我在6月左右编写的一些代码,并开始将其与我在上面发布的代码进行比较。在存在差异的地方,我将代码复制到新的测试中,最终使其正常工作

问题是,我没有调用sqlite3_步骤,因此数据库没有被查询。这导致没有行被加载,因此没有列被查询,因此sqlite3_列_文本返回的指针无效。然而,Iuri也有一个要点,即我正在以某种方式进行迭代,如果我得到的错误被修复,那么就必须开始ed越界了,我还没能让代码走那么远,所以进行了一点先发制人的调试


我还添加了一些基本的防御性代码的检入,以便在没有加载行或无效指针的情况下测试应用程序无法保存,从而运行时不会将程序踢出。

进行了更改,但当它击中该行时仍会出错。为了进一步澄清,程序一旦击中cas就会出错第一次迭代的E2。将更新问题。
for (i = 0; i < cols; i++)