Vulkan,我需要以及何时从VK_*结构中释放内存



愚蠢的问题,对不起

第一个问题

void init_something(...){
VkTypeSomething data[100];
VkResourceStruct resource={... .pointer_data=data};
VkCreateSomething(... , resource); //isit safe? resource[] is not lost?
}
void vk_clean(...){
VkDestroySomething_that_use_resource(...);
// free resource?
}

第二个问题

相同的代码,更改VkTypeSomething *data;data=malloc(...);(没有空闲功能(

当我需要释放该数据时,如果我将其 malloc 打开,我是否需要释放它

Vulkan页面说"结构在VkDestroy上被摧毁......呼叫"和"VkDestroy...必须在待命的结构中有有效的 poiinters",所以没有办法在调用之前释放它(我知道它不能像这样工作(

所以没有办法在某处创建的结构中获取指针......在 VkDestroy 之后,我是否需要保存所有创建的指针并释放它们?

看起来我明白了,但仍然不确定 据我了解,它的"VkCreate...仅使用一次设置数据",并且可以安全地在调用 VkCreate 后删除所有内容......这是真的吗?

Vulkan句柄vkCreate*创建,并由vkDestroy*销毁。它们与任何结构无关。我不确定您的自定义VkCreate*是什么或做什么,因此这超出了 Vulkan 的范围。

您是所有结构的所有者。通常,Vulkan 仅在函数调用期间借用它们(Vulkan 规范(:

应用程序拥有的内存的所有权会立即由它传入的任何 Vulkan 命令获取。此类内存的所有权必须在命令持续时间结束时释放回应用程序,以便应用程序可以在获取此内存的所有命令返回后立即更改或释放此内存。

最新更新