Память в диспетчере задач

Вот код, в котором выделяется массив на 6 миллиардов байт - это чуть больше 5.5 GB:

#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>

int main()
{
  puts("Started");

  long long n = 6'000'000'000;
  auto *a = new char[n];

  puts("Created");

  for (long long q = 0; q < n; q += 100)
    a[q] = q / 100;

  puts("Written");

  for (long long i; scanf("%lld", &i), i >= 0; )
    printf("a[%lld] = %d = %d\n", i, a[i], (char)(i/100));

  getchar();

  delete[] a;
}

Программа скомпилирована под x64 и работает верно:

Started
Created
Written
0
a[0] = 0 = 0
100
a[100] = 1 = 1
1000
a[1000] = 10 = 10
1000000
a[1000000] = 16 = 16
1000000000
a[1000000000] = -128 = -128
2000000000
a[2000000000] = 0 = 0
2000000100
a[2000000100] = 1 = 1
4000000100
a[4000000100] = 1 = 1
5000000100
a[5000000100] = -127 = -127
5999999900
a[5999999900] = -1 = -1

Visual Studio 2017 показывает потребление памяти 6 GB:

скриншот VS2017

Но в диспетчере задач видно совершенно другое:

Скриншот диспетчера задач

Пиковый рабочий набор (память)            4 769 092 К
Память (активный частный рабочий набор)   2 480 568 К
Память (частный рабочий набор)            2 480 568 К
Память (общий рабочий набор)                    292 К

Или даже так:

Рабочий набор (память)                    2 396 008 К
Пиковый рабочий набор (память)            2 507 724 К
Память (активный частный рабочий набор)   2 395 780 К
Память (частный рабочий набор)            2 395 780 К
Память (общий рабочий набор)                    228 К

Что значат эти числа (каждая из 5 колонок) и можно ли в диспетчере задач увидеть те 6 GB, которые потребляет программа?


Ответы (1 шт):

Автор решения: Алексей Андреев

Выделенная память жмите введите сюда описание изображения //(хочу рейтинг)

→ Ссылка