Я создал преднамеренную утечку памяти, чтобы продемонстрировать точку зрения людям, которые вскоре будут изучать указатели.
int main()
{
while (1)
{
int *a = new int [2];
//delete [] a;
}
}
Если это выполняется без кода с комментариями, память остается низкой и не увеличивается,как и ожидалось.Однако, если это выполняется как есть, то на машине с 2 ГБ ОЗУ использование памяти быстро возрастает примерно до 1,5 ГБ или того, что не используется системой.Однако, как только он достигнет этой точки, загрузка ЦП (которая ранее была максимальной) значительно снизилась, а также использование памяти, примерно до 100 МБ.
Что именно вызвало это промежуточное действие (если есть что-то более конкретное, чем «Windows», это было бы замечательно), и почему программа не загружает ЦП, который она будет зацикливать, но также не завершает работу?Кажется, что он застрял между концом цикла и концом основного.
Windows XP, GCC, MinGW.