愚蠢的问题,对不起
第一个问题
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后可以安全删除所有内容...是真的吗?
Vulkan handles”由vkCreate*
创建,并由vkDestroy*
销毁。它们与任何结构都没有关系。
您是所有struct的所有者。通常,Vulkan仅在函数调用期间借用它们(Vulkan规范):
应用程序拥有的内存的所有权将通过传递给它的任何Vulkan命令立即获得。在命令持续时间结束时,将此类内存必须的所有权释放回应用程序,以便应用程序can会在获取所有命令的命令返回后立即更改或释放此内存。 。