В Windows 10 есть ошибка в функции Windows Media Foundation (MFCreateSourceReaderFromURL). Это вызывает утечку памяти после каждого использования. Есть ли альтернативные функции для использования без утечки памяти? Кажется, Windows Media Foundation полна ошибок, так как я могу избежать этого?
Докажите утечку памяти, запустите этот код (x86) и наблюдайте огромную утечку памяти каждую секунду:
#include <mfapi.h>
#include <mfidl.h>
#include <mfreadwrite.h>
#pragma comment (lib, "Mfreadwrite.lib")
#pragma comment (lib, "Mfplat.lib")
#pragma comment (lib, "mfuuid.lib")
int main()
{
while (true)
{
if (FAILED(CoInitializeEx(NULL, COINIT_MULTITHREADED)))
{
return 1;
}
if (FAILED(MFStartup(MF_VERSION)))
{
return 1;
}
IMFSourceReader* sourceReader = nullptr;
if (FAILED(MFCreateSourceReaderFromURL(L"C:/any_audio_file.wav", nullptr, &sourceReader)))
{
return 1;
}
sourceReader->Release();
MFShutdown();
CoUninitialize();
}
return 0;
}
Оффтоп: так расстроен. Я использовал DirectShow только для обнаружения ошибки в сетевом аудиопотоке RenderFile. Через несколько дней перешел на альтернативу (Windows Media Foundation) и обнаружил, что там утечка памяти. Microsoft f *** you.
Редактировать: утечка памяти происходит только в том случае, если имя файла не имеет * .mp3 в конце (а содержимое - mp3). Или, если имя файла не имеет * .wav в конце (а содержимое - волна). Пример: есть mp3-файл «music.mp3». Измените имя на «music» или «music.wav». Произойдет утечка памяти.