此函数在返回行崩溃:
string questionmsg(string user, sql::Statement *stmt)
{
sql::ResultSet *res;// ...
res = stmt->executeQuery("SELECT questionmsg FROM `life-checker` WHERE `user` = '" + user + "';");
res->next();
string id = res->getString(1);
delete res;
delete stmt;
return id; //crash here - Unhandled exception Access violation
}
这里是主要的:
int main()
{
sql::mysql::MySQL_Driver *driver;
sql::Connection *con;
sql::Statement *stmt;
// ...
driver = sql::mysql::get_mysql_driver_instance();
cout<<"Connecting to database...\n";
con = driver->connect("tcp://xxx.xxx.xxx.xxx:3306", "xxxxx_user", "xxxxx_pass!");
con->setSchema("mrhowtos_main");
stmt = con->createStatement();
// ...
cout << questionmsg("Nolan", stmt);
delete con;
cout<<"done\n";
system("PAUSE");
return 0;
}
我正在逐步观察变量。 id = res-&gt; getString(1)的结果;正是我所期待的,一个小句子。所以我不知道为什么会崩溃。我在观察变量时注意到的一件事是在浏览了删除res和stmt行之后。表盒中的变量值不会改变,就像它实际上没有删除它们一样。但我不知道也许它应该如何出现。
答案 0 :(得分:0)
你确定你拥有res的内存吗? 同样对于字符串id,它仍然可以指向你已经发布的空间吗?