Память распределяется на кучу .
Когда вы запрашиваете память в вашей программе (с помощью new () или malloc () и т. Д.), Ваша программа запрашивает некоторую память из своей кучи, которая, в свою очередь, запрашивает ее из операционной системы {1}.Поскольку это дорогостоящая операция, она получает часть памяти от ОС, а не только то, что вы просите.Менеджер памяти помещает все, что попадает в кучу, просто возвращая вам, возможно, небольшую сумму, которую вы просили.Когда вы освобождаете () или удаляете () эту память, она просто возвращается в кучу, а не в ОС.
Абсолютно нормально, что эта память не возвращается в операционную систему до тех пор, пока ваша программа не выйдет, так какпозже вы можете запросить дополнительную память.
Если дизайн вашей программы основан на том, что эта память будет переработана, это может быть достигнуто при использовании нескольких копий вашей программы (с помощью fork () ~ ing), которые запускаются и завершаются.
{1} Возможно, куча не пустая при запуске программы, но при условии, что она не иллюстрирует мою точку зрения.