Каким образом среда Visual Studio рассчитывает память для процесса?

313
31 августа 2017, 20:23
class stack
{
    struct unit
    {
        int value;
        unit *past;
    };
    unit *pointer = nullptr;
    int count = 0;
public:
    stack() {}
    ~stack()
    {
        unit *buf;
        while (pointer != nullptr)
        {
            buf = pointer;
            pointer = pointer->past;
            delete(buf);
        }
    }
    void Add(int value)
    {
        unit *buf = new unit;
        buf->value = value;
        buf->past = pointer;
        pointer = buf;
        count++;
    }
    int HowManySize() const
    {
        cout << "value - " << sizeof(int) << "\tpoint - " << sizeof(unit*) << "\tunit - " << sizeof(unit) << endl;
        return (sizeof(unit) * count) + sizeof(this);
    }
};
void main()
{
    stack obj;
    Sleep(2000);
    for (int i = 0; i < 10000000; i++)
        obj.Add(i);
    int w = obj.HowManySize();
    cout  << w / 1024 / 1024 << " Mbit\t" << ((float)w / 1024 /1024 /1024) << " Gbit";
    Sleep(2000);
    obj.~stack();
    Sleep(2000);
    return;
}

При вызове функции Add() 10 000 000 раз функция HowManySize() вернет значение которое будет равно примерно 152 мегабайтам. Однако средства диагностики Visual Studio покажет что было занято почти в шесть раз больше.

При запуске деструктора используемая память падает с 870 мегабайт до 500 килобайт, следовательно утечки памяти нет.

Вопрос почему потребляется так много памяти?

Потребление оперативной памяти в среде vs:

Потребление вне среды:

READ ALSO
специализация шаблонной функции c++

специализация шаблонной функции c++

Итак, задача : Реализовать шаблонные функции (массив передаётся в функцию в качестве параметра), выполняющие следующие действия:

274
jquery post запрос(json ответ)

jquery post запрос(json ответ)

Доброго всем дняПри клике на ссылку, пытаюсь получить из б

311
Появление кнопки по времени видео с Youtube на Jquery

Появление кнопки по времени видео с Youtube на Jquery

Нужно сделать, чтобы на странице, где расположено видео с YoutubeКак сделать, чтобы кнопка появлялась в заданое время от не загрузки страницы...

337
bootstrap 3 datepicker, как сравнить 2 даты

bootstrap 3 datepicker, как сравнить 2 даты

Есть 2 календаря от bootstrap 3, нужно чтобы при выборе 2 дат, было выбрано не меньше 3 дней, при первом старте как вывеси получилось, а вот при изменении...

430