Windows Media Foundation MFCreateSourceReaderFromURL函数中的内存泄漏。还有其他功能吗?

问题描述 投票:-1回答:1

在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;
}

Offtopic:太沮丧了。我使用DirectShow只是为了发现RenderFile网络音频流中存在错误。几天后更改为替代方法(Windows Media Foundation),发现其中存在内存泄漏。微软为您服务。

编辑:仅当文件名末尾没有* .mp3(且内容为mp3)时,才会发生内存泄漏。或者,如果文件名末尾没有* .wav(内容为wave)例:有mp3文件“ music.mp3”。将名称更改为“ music”或“ music.wav”。内存泄漏将发生。

c++ winapi windows-10 visual-studio-2019 ms-media-foundation
1个回答
-1
投票
解决方案:

请勿在专业软件中使用Microsoft Windows Media Foundation,因为它充满了隐藏的错误和内存泄漏。

© www.soinside.com 2019 - 2024. All rights reserved.