Утечка ресурсов DirectX 10

В конце моего приложения DirectX я получаю "Устройство Direct3D, имеет ненулевой подсчет ссылок, означая, что некоторые объекты не были выпущены".. Приложение крупно и не записанное мной, как я могу пойти об отладке, какие средства, разве являющиеся, не высвобождены?

6
задан yxk 16 June 2010 в 03:41
поделиться

2 ответа

Первый шаг - включить использование DLL отладки DirectX, через панель управления DirectX .(IIRC, это необязательный элемент при установке DirectX SDK, поэтому вам может потребоваться их установить.)

При следующем запуске приложения DirectX должен предоставить вам больше информации о том, что происходит утечка. В частности, вы захотите найти такую ​​строку:

D3DX: Set HKLM\Software\Microsoft\Direct3D\D3DXBreakOnAllocId=0x1c17 to debug
                                                allocation id ^^^^^^

Или, например, так:

Direct3D9: (WARN) :Memory Address: 00385580 lAllocID=1 dwSize=000047f8, (pid=00000474)
                                       allocation id ^

Если у вас есть идентификатор выделения, вы можете указать DirectX прервать работу, когда это выделение произойдет в вашей программе, установив Прерывание при настройке AllocID в Панели управления DirectX (или путем настройки ключа реестра, упомянутого выше).

Затем нужно изучить стек вызовов, чтобы увидеть, какой вызов DirectX задействован.

6
ответ дан 17 December 2019 в 00:03
поделиться

Вы можете использовать утилиту DirectX Control Panel, как описано здесь . Установите флажок «Прерывание при утечке памяти», после чего вы можете использовать «Прерывание по AllocID», чтобы определить, какой ресурс не был освобожден.

1
ответ дан 17 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: