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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7  (Прочитано 5573 раз)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« : Июнь 10, 2015, 16:45 »

Добрый день, уважаемые,

был замечен такой феномен: программы, собранные с Qt 5.3.x в 64-битной конфигурации под Windows 7 постоянно отжирают память при отрисовке чего-либо. ТОТ ЖЕ САМЫЙ код, собранный теми же компиляторами на той же машине в 32-битном варианте таких проблем не имеет.

Проверялось с MSVC 2008 и 2013, результаты одинаковые: 32 бита все ок, 64 бита - дикие утечки памяти.

Сталкивались ли вы с подобным? Можно побороть? Гугл ответа пока не дал...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Bepec
Гость
« Ответ #1 : Июнь 10, 2015, 17:22 »

Вариант, что вы не учитываете разный размер типов 32 и 64 архитектур, подходит или нет?

Тот же sizeof (int) на 32 будет 4, на 64 будет 8, а указатели вроде бы будут иметь размер 64 бита.

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

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Июнь 10, 2015, 17:41 »

sizeof (int) на 32 будет 4, на 64 будет 8, а указатели вроде бы будут иметь размер 64 бита.

Не совсем так...
int везде 32 бита. Меняется только размер указателя с 32 на 64 бита.
Записан
Bepec
Гость
« Ответ #3 : Июнь 10, 2015, 17:45 »

Не везде. На некоторых архитектурах он именно 8.
К примеру на моём старом рабочем компьютере, AMD-шке, он как раз менялся от 4 до 8.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #4 : Июнь 10, 2015, 17:49 »

Вариант, что вы не учитываете разный размер типов 32 и 64 архитектур, подходит или нет?
Нет, мы не делаем ничего специфичного для 32 бит архитектуры.

Цитировать
PS это именно утечки, или просто большее потребление ресурсов?
Ну а в чем разница то? Если ресурсы потребляются чрезмерно - это и есть по сути "утечка". В 32-битном варианте, например, расход памяти доходил до 600 мб и далее не рос, а в 64-битном доходит до 2 гб, потом замедляется, но все равно медленно ползет вверх.

Тут https://bugs.launchpad.net/stellarium/+bug/1406005 тоже у народа подобная проблема только на 64 битах и только под виндой, отжирание прекращается, когда они отрисовку выключают...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Июнь 10, 2015, 20:55 »

Bepec, мне известно, что на x32 и x64 размер инта 4. Вы про какие-то специфичные говорите архитектуры?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #6 : Июнь 11, 2015, 00:19 »

Ну на Интелах на x32 и x64 размер интов 4 байта - факт. Но Верес говорит про АМД, я так понял.

ЗЫ. у нас проблема на Интелах возникает, так что не в размере интов дело Грустный
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Июнь 11, 2015, 00:35 »

Не везде. На некоторых архитектурах он именно 8.

Это зависит от модели данных, используемой компилятором. Может быть 4, а может и 8, в зависимости от компилятора для данной архитектуры.
Записан
Bepec
Гость
« Ответ #8 : Июнь 11, 2015, 00:48 »

Кстати да, замечание Alex Gustov напомнило - в VS 2008 на i7 int тоже становился 8.
PS и да, в предыдущем сообщении я и говорил об AMD, мб просто кого то спугнула русская транскрипция Улыбающийся
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #9 : Июнь 11, 2015, 01:38 »

Нативный компилятор генерирует код под конкретную архитектуру, он не может сгенерить 8-битовый инт под таргет интел, который поддерживает только 4 бита. Иначе это кросс-компиляция.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Bepec
Гость
« Ответ #10 : Июнь 11, 2015, 02:08 »

Я лично компилил программу sizeof(int). На 64 выдавало 8.
Но не суть.
По всей видимости имеет место именно баг в Qt. Надо бы поразбираться конечно, но не могу - уезжаю отдыхать Веселый
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #11 : Июнь 11, 2015, 09:27 »

интересно...  Показает язык у меня всегда был intel  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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