코드 누출 메모리, ID3DXBUFFER에서 나오는 것 같습니다.
-
05-07-2019 - |
문제
다음과 함께 셰이더를로드합니다.
ID3DXBuffer* errors = 0;
ID3DXEffect* effect = 0;
HR(D3DXCreateEffectFromFile(
gd3dDevice, L"Shader.fx", 0, 0,
D3DXSHADER_DEBUG|D3DXSHADER_SKIPOPTIMIZATION,
0, &effect, &errors));
for (int i = 0; i < 3; i++) {
if(errors) {
errors->Release();
if (effect)
effect->Release();
errors = 0;
HR(D3DXCreateEffectFromFile(gd3dDevice, L"Shader.fx",
0, 0, D3DXSHADER_DEBUG, 0, effect, &errors));
}
else
break;
}
셰이더를로드하려고 시도하고 오류/경고가 발생하면 포기하기 전에 다시 3 번 더 시도합니다.
이제 응용 프로그램을 닫을 때 D3dx가 다음과 같은 메시지를 제공합니다.
D3DX : 메모리 누출 감지 : 2 개의 할당되지 않은 (486 바이트)
그리고 이것은 오류가있을 때만 발생합니다 (즉, 루프에 들어갑니다). 왜 이런 일이 일어나고 있는지 잘 모르겠습니다. 아이디어가 있습니까?
OK IT를 수정했습니다. 단지 논리 문제 일뿐입니다. '오류'는 세 번째 시도에서 '릴리스'가 없었기 때문에 문제가 발생했습니다.
해결책 2
OK IT를 수정했습니다. 단지 논리 문제 일뿐입니다. '오류'는 세 번째 시도에서 '릴리스'가 없었기 때문에 문제가 발생했습니다.
다른 팁
참고 : DX 기능 (예 : D3dxCreateeFectFromFile)이 실패하지 않은 경우에도 ID3DXBuffer가 해제되어야합니다.
제휴하지 않습니다 StackOverflow