为什么带有connector / c ++的函数在返回行上崩溃了?

时间:2013-09-05 02:54:59

标签: c++ mysql-connector connector

此函数在返回行崩溃:

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行之后。表盒中的变量值不会改变,就像它实际上没有删除它们一样。但我不知道也许它应该如何出现。

1 个答案:

答案 0 :(得分:0)

你确定你拥有res的内存吗? 同样对于字符串id,它仍然可以指向你已经发布的空间吗?