我最近完成了一个简单的 2d 游戏引擎。在我项目的 sprite 模块中,有一个关于
“AI.exe 中 0x00CE4A75 处的未处理异常:0xC0000005:访问冲突读取位置 0xCCCCCCCC。”
我不知道是什么原因造成的,因为一切都被初始化和释放。这个异常似乎发生在if( m_inputLayout ) m_inputLayout->Release()中。其他一切都很好。代码就在下面。
CAIGESprite::~CAIGESprite(void)
{
if( m_mvpCB ) m_mvpCB->Release();
if( m_alphaBlendState ) m_alphaBlendState->Release();
if( m_colorMapSampler ) m_colorMapSampler->Release();
if( m_colorMap ) m_colorMap->Release();
if( m_vertexBuffer ) m_vertexBuffer->Release();
if( m_inputLayout ) m_inputLayout->Release();
if( m_solidColorPS ) m_solidColorPS->Release();
if( m_solidColorVS ) m_solidColorVS->Release();
if( m_textureFile ) delete m_textureFile;
if( m_shaderFile ) delete m_shaderFile;
m_shaderFile = nullptr;
m_textureFile = nullptr;
m_solidColorVS = NULL;
m_solidColorPS = NULL;
m_inputLayout = NULL;
m_vertexBuffer = NULL;
m_colorMap = NULL;
m_colorMapSampler = NULL;
m_alphaBlendState = NULL;
m_mvpCB = NULL;
}
我还检查了它们每个的内容,它们都是空的Unable to read memory,那么为什么 m_inputLayout 会有所不同并导致异常呢?可能的原因是什么。
如果需要,我会发布更多代码。