Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GLFW与vulkan,如何消除内存泄漏?_C++_Memory Leaks_Valgrind_Glfw_Vulkan - Fatal编程技术网

C++ GLFW与vulkan,如何消除内存泄漏?

C++ GLFW与vulkan,如何消除内存泄漏?,c++,memory-leaks,valgrind,glfw,vulkan,C++,Memory Leaks,Valgrind,Glfw,Vulkan,我试图在ArchLinux中使用GLFW和vulkan 我注意到调用glfwGetRequiredInstanceExtensions时出现内存泄漏。要检测上述内存泄漏,我只需用程序调用valgrind Valgrind报告: ==13943== LEAK SUMMARY: ==13943== definitely lost: 48 bytes in 2 blocks ==13943== indirectly lost: 48 bytes in 2 blocks ==13943==

我试图在ArchLinux中使用GLFW和vulkan

我注意到调用
glfwGetRequiredInstanceExtensions
时出现内存泄漏。要检测上述内存泄漏,我只需用程序调用valgrind

Valgrind报告:

==13943== LEAK SUMMARY:
==13943==    definitely lost: 48 bytes in 2 blocks
==13943==    indirectly lost: 48 bytes in 2 blocks
==13943==      possibly lost: 0 bytes in 0 blocks
我的代码是:

int main() {
    glfwInit();
    uint32_t glfwExtensionCount = 0;
    const char** glfwExtensions;
    glfwExtensions = glfwGetRequiredInstanceExtensions(&glfwExtensionCount);
    glfwTerminate();

    return 0;
}
如果我注释掉
glfwGetRequiredExtensions
valgrind报告没有泄漏

此外,我不知道;我不想自己尝试释放该内存,因为该函数的文档说明:

指针寿命: 返回的数组由GLFW分配和释放。你不应该自己把它放出来。它保证仅在库终止之前有效

我知道它只有48字节,但我更希望没有内存泄漏,如果只是为了强迫症


有什么方法可以适当地避免这个问题吗?

我不熟悉glfw,但是假设glfwTerminate应该释放扩展列表(而不是您没有进行的其他调用),您唯一的选择可能是调试glfw中的漏洞并在那里修复。根据文档,它应该会释放它。我还搜索了glfw代码,似乎有适当的内存管理删除指针。它是否返回Wayland或X11扩展?我的系统只有X11。您是否尝试在
\u glfwInitVulkan
中显式调用Vk函数以查看它是否真的是glfw泄漏,或者加载程序/Vulkan驱动程序?我不熟悉glfw,但是假设glfwTerminate应该释放扩展列表(而不是您没有进行的其他调用),您唯一的选择可能是调试glfw中的漏洞并在那里修复。根据文档,它应该释放它。我还搜索了glfw代码,删除指针时似乎有适当的内存管理。它是否返回Wayland或X11扩展?我的系统只有X11。您是否尝试在
\u glfwInitVulkan
中显式调用Vk函数,以查看它是否真的是glfw泄漏,或者加载程序/Vulkan驱动程序?