VkObjects是否需要为空,还是以某种方式自动解决?
VkBuffer _buffer;
和这样的析构函数:
Buffer::~Buffer()
{
vkDestroyBuffer(_device.getLogicalDevice(), _buffer, nullptr);
if(_memory) {
vkFreeMemory(_device.getLogicalDevice(), _memory, nullptr);
}
}
调用析构函数后,是否需要将_buffer设置为VK_NULL_HANDLE或nullptr,还是没有必要,这是自动完成的?
(基本上,我的问题是,在调用vkDestroyXYZ / vkFreeXYZ之后,规范是否处于对象实例处于哪种状态)
如果是,它适用于所有VkObjects(如VkInstance
,VkImage
等)或有一些例外?
我以为我可以保留原样(尤其是在它立即销毁后),还可以,但是我们在代码审查期间进入了讨论,可以说,我的审查员已为该对象设置了-pedantic和-Wall。为了我们的代码库,我必须承认:)
当您(正确)销毁了Vulkan对象时,该对象也将被销毁。到此为止。这与通过其指针销毁C ++中的对象没有什么不同:指向的对象不见了。
指针值本身的操作由您自己决定(除了将其值作为输入传递给Vulkan API外,您当然不能这样做)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句