DirectX メモリリークについて
Posted: 2011年11月23日(水) 13:24
現在、以下のようなメモリリークのエラーが出て困っています。
Direct3D9: (ERROR) :Memory still allocated! Alloc count = 383
Direct3D9: (ERROR) :Current Process (pid) = 00003140
MyPro.exe によってブレークポイントが発生しました
Direct3D9: (ERROR) :Memory Address: 020607fc lAllocID=1 dwSize=00004bc4, ReturnAddr=614ed5ea (pid=00003140)
Direct3D9: (ERROR) :Memory Address: 020653f4 lAllocID=2 dwSize=00000350, ReturnAddr=614f02fa (pid=00003140)
Direct3D9: (ERROR) :Memory Address: 0206577c lAllocID=3 dwSize=00000ef0, ReturnAddr=614f6401 (pid=00003140)
[tab=30][tab=30]<< 中略 >>
Direct3D9: (ERROR) :Memory Address: 0506c48c lAllocID=12312 dwSize=0000c6f8, ReturnAddr=614ed5ea (pid=00003140)
Direct3D9: (ERROR) :Memory Address: 050bd274 lAllocID=12313 dwSize=0000007c, ReturnAddr=6150a22b (pid=00003140)
Direct3D9: (ERROR) :Total Memory Unfreed From Current Process = 3026571 bytes
Direct3D9: :====> EXIT: DLLMAIN(614ed9a0): Process Detach 00003140
D3DX: MEMORY LEAKS DETECTED: 3 allocations unfreed (3068 bytes)
D3DX: Set HKLM\Software\Microsoft\Direct3D\D3DXBreakOnAllocId=0x27d to debug
いろいろデバッグしていて気付いたのですが、
LPDIRECT3DDEVICE9の解放時に、記憶域制御ブロックが壊れていますというエラー値
LPDIRECT3D9の解放時に、指定されたファイルが見つかりませんというエラー値が返ってきていました
DirectXControlPanelにてAlloc countをブレークポイントのIDとしてみましたが、メモリの確保を行っている部分ではありませんでした
この問題の解決方法、デバッグの方法について詳しい方がいらっしゃればご教授ください
また、心当たりのある部分あればご指摘ください。
あと、
Direct3D9: (ERROR) :************************************************************
Direct3D9: (ERROR) :ASSERTION FAILED! File s:\gfx_aug09\windows\directx\dxg\inactive\d3d9\d3d\fw\lhbatchfilter.cpp Line 3466: pArgs->Flags.Discard <<(ループ毎に)
Direct3D9: (ERROR) :************************************************************
恐らく、VRAMのロックのフラグが間違っているにでしょうか
Direct3D9: (WARN) :Ignoring redundant SetRenderState - 7
Direct3D9: (WARN) :Ignoring redundant SetRenderState - 141
という警告に関しても調べても良く分かりませんでした
そちらについても、ご存じでしたらお願いします。
Direct3D9: (ERROR) :Memory still allocated! Alloc count = 383
Direct3D9: (ERROR) :Current Process (pid) = 00003140
MyPro.exe によってブレークポイントが発生しました
Direct3D9: (ERROR) :Memory Address: 020607fc lAllocID=1 dwSize=00004bc4, ReturnAddr=614ed5ea (pid=00003140)
Direct3D9: (ERROR) :Memory Address: 020653f4 lAllocID=2 dwSize=00000350, ReturnAddr=614f02fa (pid=00003140)
Direct3D9: (ERROR) :Memory Address: 0206577c lAllocID=3 dwSize=00000ef0, ReturnAddr=614f6401 (pid=00003140)
[tab=30][tab=30]<< 中略 >>
Direct3D9: (ERROR) :Memory Address: 0506c48c lAllocID=12312 dwSize=0000c6f8, ReturnAddr=614ed5ea (pid=00003140)
Direct3D9: (ERROR) :Memory Address: 050bd274 lAllocID=12313 dwSize=0000007c, ReturnAddr=6150a22b (pid=00003140)
Direct3D9: (ERROR) :Total Memory Unfreed From Current Process = 3026571 bytes
Direct3D9: :====> EXIT: DLLMAIN(614ed9a0): Process Detach 00003140
D3DX: MEMORY LEAKS DETECTED: 3 allocations unfreed (3068 bytes)
D3DX: Set HKLM\Software\Microsoft\Direct3D\D3DXBreakOnAllocId=0x27d to debug
いろいろデバッグしていて気付いたのですが、
LPDIRECT3DDEVICE9の解放時に、記憶域制御ブロックが壊れていますというエラー値
LPDIRECT3D9の解放時に、指定されたファイルが見つかりませんというエラー値が返ってきていました
DirectXControlPanelにてAlloc countをブレークポイントのIDとしてみましたが、メモリの確保を行っている部分ではありませんでした
この問題の解決方法、デバッグの方法について詳しい方がいらっしゃればご教授ください
また、心当たりのある部分あればご指摘ください。
あと、
Direct3D9: (ERROR) :************************************************************
Direct3D9: (ERROR) :ASSERTION FAILED! File s:\gfx_aug09\windows\directx\dxg\inactive\d3d9\d3d\fw\lhbatchfilter.cpp Line 3466: pArgs->Flags.Discard <<(ループ毎に)
Direct3D9: (ERROR) :************************************************************
恐らく、VRAMのロックのフラグが間違っているにでしょうか
Direct3D9: (WARN) :Ignoring redundant SetRenderState - 7
Direct3D9: (WARN) :Ignoring redundant SetRenderState - 141
という警告に関しても調べても良く分かりませんでした
そちらについても、ご存じでしたらお願いします。