我得到這個奇怪的錯誤,我從閱讀私有類級別的值(無指針)獲取訪問衝突。從私有成員值類型(布爾)讀取訪問衝突
HRESULT WindowedSinkRenderer::Initialize(IMLTeeSink3 *sink)
{
std::cout << "Test\n";
// exception throw here
std::cout << "Test" << _isInitialized << "\n";
std::cout << "Test\n";
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;
};
這裏是我的構造函數在那裏事件BOOL初始化爲false。
WindowedSinkRenderer::WindowedSinkRenderer() : _isInitialized(false)
{
}
什麼給?爲什麼錯誤?
0xC0000005: Access violation reading location 0xCDCDCDE1.
請顯示代碼您在哪裏調用'WindowedSinkRenderer :: Initialize()' –
0xcdcdcdcd模式是未初始化內存的典型模式(請參閱例如[此頁供參考](https://msdn.microsoft.com /en-us/library/aa260966%28v=vs.60%29.aspx))。 「0xCDCDCDE1」看起來像是來自未初始化指針的偏移量。 –
@JoachimPileborg這是一個指向WindowedSinkRenderer的無效指針。它拋棄了我,因爲我仍然可以在方法中執行代碼,前提是我將該方法視爲靜態方法(不訪問實例成員)。 –