Этот код выглядит как использование всей системной памяти. Почему это случилось?
sql::Statement *Query;
sql::ResulSet *Result;
while(1){
Query = con->createStatement();
Result = Query->executeQuery("SELECT `Some` FROM `Table` LIMIT 1");
Result->next();
Result->close();
Query->close();
cout << "console message..." << endl;
//delete Query; SEGFAULT
}
Если я прокомментирую все строки, кроме cout, память не заполняется. Но использование SQL выглядит как Query = con> createStatement; не заменяет старое значение Query и Result = bla; не заменяет старое значение
createStatement()
а также executeQuery
создаем новые объекты (которые вы храните в Query
а также Result
, Если вы явно не удалите их, они останутся в памяти.
добавлять
delete Result;
delete Query;
К твоему кругу.
Кстати, это в документации к разъему (вместе с примером кода).
Ну, похоже, в Google нет информации. Я нашел в чем проблема.
как сказал SJuan76, каждый вызов createStatement и executeQuery является новым объектом
Итак, я начал делать много попыток, и я понял из следующего
Таким образом, код для того, чтобы «вечно работающая» программа использовала всегда одну и ту же память, должна выглядеть так
sql::Statement *Query;
sql::ResulSet *Result;
Query = con->createStatement();
while(1){
if(!Result->isClosed()) Result->close();
delete Result;
Result = Query->executeQuery("SELECT `Some` FROM `Table` LIMIT 1");
Result->next();
cout << "console message..." << endl;
}