当您泄漏 "device" 和 "device context" 时会发生什么 - 特别是 d3d?

What happens when you leak a "device" and "device context" - specifically d3d?

我有点不清楚这些对象究竟是如何发挥作用的,它们构成了软件和硬件之间的桥梁。如果您在终止进程时将它们泄漏到堆中,它们是否只是软件对象会被破坏?或者还有更多内容?

我问的原因是我忘记让我的初始化例程更改其状态机并因此切换例程导致它创建尽可能多的 "DeviceContexts" 和 "Devices" 并将它们重新分配给在我发现我的内存泄漏大约 2GB 之前,相同的指针(通过 d3d11createdevice)。

然后我突然想到,我真的不知道释放这些对象失败意味着什么。如果这些对象被泄露以至于我需要重置计算机,是否有我应该关注的硬件组件?还是终止进程几乎可以清理混乱?

为了保险起见,我冷重启了我的电脑。但是,如果您能确切地知道当您使用像这样的低级接口并且您未能正确使用它们时会发生什么,那就太好了。destroy/release。

当您的程序终止时,操作系统将清除所有这些设备上下文。否则,行为不当的程序可能会使系统停止运行。

您对损坏硬件的其他担忧(在评论中表达)也不应该存在。如果它是恶意程序,可能会造成各种破坏。您可能会通过直接访问硬件来损坏硬件,但这种访问是驱动程序(以及位于您的程序和驱动程序之间的设备上下文)的目的。