从私有成员值类型 (bool) 读取的 VC++ 访问冲突

VC++ Access violation reading from private member value types (bool)

本文关键字:读取 VC++ 访问冲突 bool 成员 类型      更新时间:2023-10-16

我收到这个奇怪的错误,我从读取私有类级值(没有指针)时遇到访问冲突。

HRESULT WindowedSinkRenderer::Initialize(IMLTeeSink3 *sink)
{
    std::cout << "Testn";
    // exception throw here
    std::cout << "Test" << _isInitialized << "n";
    std::cout << "Testn";
    return S_OK;
}

这是我的标题

class WindowedSinkRenderer
{
public:
    WindowedSinkRenderer();
    ~WindowedSinkRenderer();
    HRESULT Initialize(IMLTeeSink3 *sink);
    HRESULT Deinitialize();
    HRESULT SetRenderOwner(HWND handle);
    HRESULT SetRenderDimensions(int width, int height, bool fillVideo);
    HRESULT GetCurrentImage(BITMAPINFOHEADER* bitmapHeader, BYTE** data, DWORD* size, bool* bufferHasInfoHeader);
private:
    DWORD _remoteGraphRegister;
    SmartPtr<IGraphBuilder> _graphBuilder;
    SmartPtr<IFilterGraph2> _filterGraph;
    SmartPtr<IMediaControl> _mediaControl;
    WindowedVideoRenderer* _videoRenderer;
    bool _isInitialized;
};

这是我的构造函数,它事件将布尔值初始化为 false。

WindowedSinkRenderer::WindowedSinkRenderer() : _isInitialized(false)
{
}

什么给?为什么会出现错误?

0xC0000005: Access violation reading location 0xCDCDCDE1.

看起来您正在使用指向 WindowedSinkRenderer 对象的无效指针调用 Initialize。