Это утечка памяти или я неправильно читаю то, что показывает Visual Studio 2017? - PullRequest
1 голос
/ 23 марта 2019

Я только изучаю C ++ и решил использовать Allegro 5 и Visual Studio 2017 для создания простой 2D-игры, но, написав очень простую программу, которая просто создает и разрушает окно, я беспокоюсь, что при такой утечке памятиНасколько мне известно, в этом отношении код должен быть в порядке.

Надеюсь, мне просто нужно лучше понять, что Visual Studio показывает мне при запуске кода с помощью опции «Локальный отладчик Windows».

Я запускаю приведенный ниже код через Visual Studio 2017 и опцию «Local Windows Debugger».Насколько я вижу, код работает нормально, но в окне «Средства диагностики», глядя на использование памяти процесса, я обеспокоен возможной утечкой памяти.

Вот код ...

#include <iostream>
#include <allegro5/allegro5.h>

int main()
{
std::system ("pause");

al_init();
ALLEGRO_DISPLAY *disp = al_create_display(320, 200);

std::system ("pause");

al_destroy_display(disp);
std::cout << "allegro display has been destroyed...\n";

std::system("pause");

return 0;
}

Вы увидите, что я вставил паузы в разных местах кода, и когда код достигнет последней паузы, я ожидаю, что использование памяти процесса будет таким же, как когда код был при первой паузе.

Это означает, что я ожидаю, что использование Process Memory будет таким же в конце main, как и в начале, или, конечно, после al_init ();

Но я вижу следующее...

Обычно память процесса показывает использование ...

При запуске Main ... 1.7MB

После al_init (); ... 1.7MB

После создания дисплея / окна ... 31.4MB

После al_destroy display / window ... 13.8MB

Конечно, после того, как окно разрушено / закрыто, я должен увидеть ProcessВозврат памяти к 1.7MB?

Я так же просто создал программу, используя OpenGL иувидеть подобное поведение, хотя и с более высоким использованием памяти процесса в целом.

Надеюсь, мне просто нужно лучше понять, что Visual Studio показывает мне при запуске кода с помощью опции «Local Windows Debugger».

Спасибо за чтение ....

...