최근에 간단히 2 차원 게임 엔진을 사용했습니다. 내 프로젝트의 스프라이트 모듈에서, exeption에 대한DirectX 11 메모리 할당 해제 오류
있다 "가 0xc0000005 : 처리되지 않은 AI.exe에서 0x00CE4A75에서 예외입니다. 액세스 위반 읽기 위치 0xCCCCCCCC는"
모든 것이 초기화되고 할당 해제되므로 무엇이 원인인지 알 수 없습니다. 그리고이 예외는 (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;
}
는 또한 그들 각각의 내용을 확인하고 그들은 모두 비어 메모리을 읽을 수 없습니다, 그래서 왜 m_inputLayout이 다를 수와 exeption을 일으킬 것인가? 가능한 이유는 무엇입니까?
요청하면 더 많은 코드를 게시 할 예정입니다.
0xcccccccc는 디버그 모드에서 코드를 실행할 때 MSVC가 "초기화되지 않은 변수"를 설정하는 값입니다. 내 생각 엔 포인터 필드 중 하나가 NULL로 설정되지 않았고 올바른 포인터로 초기화되지 않았기 때문에 포인터를 설정하지 않았으므로 "0xccccccccc"입니다. –
고마워요. 두 생성자가 있기 때문에 다른 생성자가 특정 값을 초기화하는 것을 잊어서 예외가 발생한다는 사실을 알지 못했습니다. 다시 한번 감사드립니다. –