Russian Qt Forum
Март 28, 2024, 13:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Утечка памяти QByteArray addBindValue  (Прочитано 4379 раз)
Acrobat
Гость
« : Сентябрь 19, 2016, 17:26 »

Доброго времени суток. Не могу победить утечку памяти.
Выделяю буфер buf[] с помощью new (buf[2] статический массив указателей)
Заполняю его. После

for(int x = 0; x < 2; ++x)
{
     delete[] buf
  • ;
    init(buf
  • );
    query.addBindValue(QByteArray(buf
  • , size));    
}

query.exec();


Не могу понять где утекает память. Вообще, как правильно очистить QByteArray, если инициализирую его своим буфером char * buf
  •  ?
Утечка как то связана с buf и QByteArray, т.к. комментирование решает проблему.
« Последнее редактирование: Сентябрь 19, 2016, 17:29 от Acrobat » Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #1 : Сентябрь 20, 2016, 09:11 »

откуда информация что утекает память ?
код оформлен безобразно
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Сентябрь 20, 2016, 09:21 »


Код
C++ (Qt)
for(int x = 0; x < 2; ++x)
{
   delete[] buf[x];
   init(buf[x]);
   query.addBindValue(QByteArray(buf[x], size));
}
query.exec();
 
Дайте больше кода и пользуйтесь тэгами.
Покажите как присваиваются значения buf, само объявление buf.
Записан
Acrobat
Гость
« Ответ #3 : Сентябрь 20, 2016, 12:49 »

Всем спасибо, разобрался самостоятельно. Не подскажите почему приложение собранное, как debug работает гораздо быстрее, чем release?
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #4 : Сентябрь 20, 2016, 14:49 »

Не подскажите почему приложение собранное, как debug работает гораздо быстрее, чем release?

в слове debug меньше букв - это всё что можно сказать по полученной информации
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Сентябрь 20, 2016, 15:25 »

Лог сборки хотя бы выложите для обоих профилей
Записан
Acrobat
Гость
« Ответ #6 : Сентябрь 21, 2016, 14:34 »

debug для myapp:   
cl -c -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -GR -EHsc -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\Qt\4.8.6\include\QtCore" -I"c:\Qt\4.8.6\include\QtGui" -I"c:\Qt\4.8.6\include\QtSql" -I"c:\Qt\4.8.6\include" -I"..\myapp\ibase\include" -I"c:\Qt\4.8.6\include\ActiveQt" -I"debug" -I"." -I"..\myapp" -I"." -I"c:\Qt\4.8.6\mkspecs\win32-msvc2010" -Fodebug\ @C:\Users\COMP\AppData\Local\Temp\nm3950.tmp
moc_mainwindow.cpp
qrc_res.cpp
Создание кода...
   link /LIBPATH:"c:\Qt\4.8.6\lib" /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /MANIFEST /MANIFESTFILE:"debug\myapp.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:debug\myapp.exe @C:\Users\COMP\AppData\Local\Temp\nm3D38.tmp
   mt.exe -nologo -manifest "debug\myapp.intermediate.manifest" -outputresource:debug\myapp.exe;1

relese для myapp:
   cl -c -nologo -Zm200 -Zc:wchar_t- -O2 -MD -GR -EHsc -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_NO_DEBUG -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DNDEBUG -I"c:\Qt\4.8.6\include\QtCore" -I"c:\Qt\4.8.6\include\QtGui" -I"c:\Qt\4.8.6\include\QtSql" -I"c:\Qt\4.8.6\include" -I"..\myapp\ibase\include" -I"c:\Qt\4.8.6\include\ActiveQt" -I"release" -I"." -I"..\myapp" -I"." -I"c:\Qt\4.8.6\mkspecs\win32-msvc2010" -Forelease\ @C:\Users\COMP\AppData\Local\Temp\nmE4BB.tmp
moc_mainwindow.cpp
qrc_res.cpp
Создание кода...
   link /LIBPATH:"c:\Qt\4.8.6\lib" /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /MANIFEST /MANIFESTFILE:"release\myapp.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:release\myapp.exe @C:\Users\COMP\AppData\Local\Temp\nmE78A.tmp
   mt.exe -nologo -manifest "release\myapp.intermediate.manifest" -outputresource:release\myapp.exe;1
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Сентябрь 21, 2016, 15:16 »

debug работает гораздо быстрее, чем release?
А на основании чего утверждаете?
Записан
Acrobat
Гость
« Ответ #8 : Сентябрь 21, 2016, 15:21 »

По прогресс бару видно. Вообще по процессу обработки БД. В дебаг гораздо быстрее всё.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #9 : Сентябрь 21, 2016, 16:15 »

А под обработкой БД что подразумеваете?
Записан
Acrobat
Гость
« Ответ #10 : Сентябрь 22, 2016, 12:17 »

Запрос к одной (SELECT) и запись в другую новую (INSERT). Может проблема быть связана с тем, что я использую QtConcurent и обрабатываю БД в потоке запущенном с помощью QtConcurent ?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #11 : Сентябрь 22, 2016, 16:10 »

По идее не должно быть. Можно попробовать перетереть файл user.pro, но не уверен, что это поможет.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 22.