Довольно часто функции выделения памяти в C / C ++ не возвращают освобожденную память операционной системе, а хранят ее в своем собственном списке для удовлетворения будущих распределений.
Например, если вы используетеnew
для выделения массива 190 МБ, затем delete
, вполне вероятно, что инструменты операционной системы все равно покажут, что программа использовала 190 МБ.Однако, чтобы увидеть, действительно ли функция теряет память, вы можете запустить ее дважды.Если произойдет утечка памяти, после второго использования потребуется 380 МБ, но если она освободит память, она будет использовать те же 190 МБ.
Часто такое поведение настраивается в среде выполнения C ++.Но значения по умолчанию были выбраны таким образом, чтобы они наиболее подходили для общих случаев использования.