Виртуальные байты приложения увеличиваются в 2 раза по сравнению с частными байтами.
Если приложение выделяет только кучу, то для меня это будет признаком того, что приложение выделяет много памяти, но никогда не затрагивает ее. Например:
void *p = malloc( 16u<<20 );
потребляет 16 МБ виртуальной памяти. Но пока приложение не выполняет никаких действий с блоком памяти, ОС даже не будет пытаться отобразить виртуальную память в ОЗУ. Самый простой способ принудительного фактического выделения частной памяти - это memset () it:
void *p = malloc( 16u<<20 );
memset( p, 0, 16u<<20 );
означает ли это утечку памяти? плохой дизайн приложения?
Или оба. Или ни того, ни другого.
Более длинный вариант ответа: неизвестно, зависит от того, какое приложение памяти выделяет, какие другие ресурсы использует приложение, ОС, ч / б платформа и т. Д.
Если вы не уверены, используйте инструменты анализа утечки памяти, например, Valgrind . Прочтите SO для получения дополнительной информации о анализе утечек памяти в C ++ .