C++ GLFW与vulkan,如何消除内存泄漏?
我试图在ArchLinux中使用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==
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驱动程序?