Почему происходит утечка памяти?
while (true)
{
ULONG_PTR gdiplusToken;
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
GdiplusShutdown(gdiplusToken);
}
Структура gdiplusStartupInput используется инициализированная по-умолчанию, что провоцирует создание фоновых потоков, которое потом не обрабатывается. Корректная инициализация, не порождающая утечек, выглядит вот так:
for(;;)
{
::ULONG_PTR token{};
::Gdiplus::GdiplusStartupInput input{};
input.GdiplusVersion = 1;
input.DebugEventCallback = nullptr;
input.SuppressBackgroundThread = TRUE;
input.SuppressExternalCodecs = TRUE;
if(::Gdiplus::Status::Ok == ::Gdiplus::GdiplusStartup(&token, &input, nullptr))
{
::Gdiplus::GdiplusShutdown(token);
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости