arrays - 从函数修改时,char * 数组不再有效 (C99)
问题描述
在 Vulkan 中,但这更像是一个 c99 问题,我以这种方式创建我的扩展列表:
const char *extension_list[7];
uint32_t extension_count = 0;
extension_list[ extension_count++ ] = VK_KHR_SWAPCHAIN_EXTENSION_NAME;
extension_list[ extension_count++ ] = VK_KHR_MAINTENANCE1_EXTENSION_NAME;
然后我可以用这个扩展数组调用 vkCreateDevice 并计数:
VkDeviceCreateInfo desc;
desc.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
desc.enabledExtensionCount = extension_count;
desc.ppEnabledExtensionNames = extension_list ;
// (...)
vkCreateDevice( physical_device, &desc, NULL, &vk.device );
我需要从函数 addOtherExt() 添加其他扩展。(我简化了代码,只显示了我的问题,但我有几个扩展要添加。)
void addOtherExt( const char *list[], uint32_t *count )
{
list[ *count ] = VK_KHR_MAINTENANCE1_EXTENSION_NAME;
*count += 1;
}
除了函数调用之外,代码是相同的:
extension_list[ extension_count++ ] = VK_KHR_SWAPCHAIN_EXTENSION_NAME;
addOtherExt( extension_list, &extension_count );
vkCreateDevice 没有返回错误,但我收到了消息“无法找到入口点 vkAcquireNextImageKHR”的崩溃。
我打印了数组 extension_list,它看起来与没有功能的版本完全一样(添加了扩展名),并且 extension_count 是正确的。我怀疑终止 '\0' 但没有设法使其工作。
解决方案
推荐阅读
- python - 如何抓取具有嵌套表的表?
- dji-sdk - Gimbal Rotation - 在旋转完成之前触发 withCompletion 方法
- python - 递归查找列表列表中的最小值
- swift - 在 ForEach 迭代中将数据传递到自定义视图 (SwiftUI)
- c# - HttpWebRequest StreamReader 失败,出现 utf-8 is not a supported encoding name 错误
- java - 未显示覆盖私有方法错误
- javascript - super() 上的打字稿错误:预期 1-2 个参数,但得到 0
- linux - Kubernetes - 本地存储 - nodeAffinity 不起作用
- java - 持久性上下文中的 EntityManager 不适用于 Spring Async 方法
- c++ - 在双精度向量上使用 C++ Eigen norm() 函数的问题