Я использую sqlite3_prepare_v2 в приложении C++ и получаю утечку памяти при создании экземпляра внешней функции sqlite3_stmt, вызывающей sqlite3_prepare_v2.sqlite3_prepare_v2 зависит от области действия
образец:
sqlite3_stmt* ps=NULL;
void prepare(void)
{
if(ps == NULL)
sqlite3_prepare_v2(&db,"insert into nomatterbd...",-1,&ps,NULL);
}
вызов подготовки, закрыть запущенные приложения, и вы получите утечку памяти.
не делая таким образом:
void prepare(void)
{
sqlite3_stmt* ps=NULL;
sqlite3_prepare_v2(&db,"insert into nomatterbd...",-1,&ps,NULL);
}
нет утечек памяти. проверено с последней амальгацией.
Моя цель - открыть и закрыть БД для каждой вставки или обновления. Чтобы ускорить работу всего , я хотел бы подготовить глобальные операторы для вставки и обновления. К сожалению, это не удастся, если глобальные и когда-то созданные заявления вызывают утечку памяти.
Может ли кто-нибудь помочь? Спасибо.
Это поможет, если вы можете предоставить ** полную ** программу, которая демонстрирует вашу проблему. Пожалуйста, сохраните ** ** ** (20 строк или меньше). Скопируйте его прямо в вопрос, чтобы мы могли скомпилировать его и посмотреть, получим ли мы те же результаты. См .: http://sscce.org/. –