Существует множество подробных инструкций по измерению использования памяти C++. (Пример ссылки внизу)
Если у меня есть программа, обрабатывающая и отображающая пиксельные данные, я могу использовать диспетчер задач Windows, чтобы обнаружить утечку памяти, если последовательная обработка/отображение/закрытие нескольких файлов означает, что память исполняемого файла (частный рабочий набор) увеличивается с каждой итерацией. Да, не идеально, но обработка тысяч кадров данных работает как быстрое и грязное решение.
Чтобы устранить ошибку памяти в этом (большом) проекте, я написал программу для точного измерения использования памяти, используя полезный ответ Ланзелота. А именно, часть под названием «Общая физическая память (ОЗУ)». Но если я вызову размер 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, это занимает 4K (будь то 1 или 1000000 двойных). С решением Lanzelot, к северу от 500k..