Vulkan,我需要什么,从VK_ *结构中释放内存时也需要

问题描述 投票:0回答:1

愚蠢的问题,对不起

第一个问题

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(...);(功能不可用)

当我需要分配数据时要释放该数据,是否需要释放它

Vulkan页面告诉“ VkDestroy ...调用时结构被破坏”和“ VkDestroy ...调用时结构中必须具有有效点”,所以在调用之前没有办法释放它(我知道它不能像这样工作)

所以没有办法让指针进入在某个地方创建的结构内……在VkDestroy之后,我是否需要保存所有创建的指针并释放它们自己的自身?

看起来我了解,但仍不确定据我了解,它的“ VkCreate ...仅使用设置数据一次”和调用VkCreate后可以安全删除所有内容...是真的吗?

memory memory-management vulkan
1个回答
0
投票

Vulkan handles”由vkCreate*创建,并由vkDestroy*销毁。它们与任何结构都没有关系。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.