Существует множество подробных инструкций для измерения использования памяти 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 тыс.