Почему моя функция с Connector / C ++ падает на обратной линии?

эта функция вылетает на обратной линии:

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-> getString (1); это именно то, что я ожидал, небольшое предложение. так что я не знаю, почему его сбой. Одна вещь, которую я заметил, наблюдая за переменными, — это после перехода через строки удаления res и stmt. значения переменных в окне наблюдения не изменяются, как будто они не удаляются. Но я не знаю, может быть, так оно и должно быть.

0

Решение

Вы уверены, что у вас есть память для отдыха?
Также для идентификатора строки, он все еще может указывать на пространство, которое вы уже освободили?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]