Quick'n'Dirty: измерить использование памяти? - PullRequest
0 голосов
/ 31 мая 2018

Существует множество подробных инструкций для измерения использования памяти C ++.(Пример ссылок внизу)

Если у меня есть программа, обрабатывающая и отображающая данные пикселей, я могу использовать диспетчер задач Windows, чтобы определить утечку памяти, если обработка / отображение / закрытие нескольких файлов подряд означает память исполняемого файла.(Частный рабочий набор) растет с каждой итерацией.Да, не идеально, но обрабатывает тысячи кадров данных, это работает как быстрое и грязное решение.

Чтобы отследить ошибку памяти в этом (большом) проекте, я написал программу для точного измерения памятииспользование, используя полезный ответ Lanzelot .А именно, часть под названием «Общая физическая память (ОЗУ)».Но если я вычислю размер 1 double, я получу 577536. Даже если это кавычка в битах, это очень много ..

Я попытался написать стандартную программу для паузы, чтобы выделить ее (например, callocданные в мегабайтах) и снова сделайте паузу перед освобождением памяти.Пауза достаточно длинная, чтобы мне было удобно смотреть на WTM.За исключением того, что исполняемый файл увеличивается только на 4 К (!) За одно назначение памяти.

Что мне здесь не хватает?QtCreator или компилятор оптимизирует выделенную память?Почему большой сложный проект, по-видимому, допускает разрешение использования памяти до ~ 1 МБ, а при любом размере памяти, с которым я бесполезно манипулирую в своей простой программе, голое перемещение вообще отображает память в диспетчере задач Windows?

C ++: Измерение использования памяти из программы, Windows и Linux

https://stackoverflow.com/a/64166/2903608

--- Редактировать --- Пример кода, такой же простой как:

double *pDouble = (double*) calloc(1, sizeof(double));
*pDouble = 5.0;
qDebug() << "*pDouble: " << *pDouble;

Если я просматриваю WTM, это занимает 4 КБ (1 или 1000000 двойных).С помощью решения Lanzelot, к северу от 500 тыс.

...