valgrind 报告的 SDL2 linux 内存泄漏
SDL2 linux memory leak reported by valgrind
只是尝试在 linux/GCC 下用 C++17
编写的小型 SDL2 程序中检测一些潜在问题
valgrind 报告了很多关于 vg_replace_malloc.c
的嘈杂内存泄漏,建议从官方文档中忽略 (link)
(Ignore the "vg_replace_malloc.c", that's an implementation detail.)
但是后面分析,有一个块:
==9891== 256 bytes in 4 blocks are definitely lost in loss record 2,243 of 2,414
==9891== at 0x483980B: malloc (vg_replace_malloc.c:309)
==9891== by 0x40156B3: dl_open_worker (in /usr/lib64/ld-2.30.so)
==9891== by 0x4E60407: _dl_catch_exception (in /usr/lib64/libc-2.30.so)
==9891== by 0x40148FD: _dl_open (in /usr/lib64/ld-2.30.so)
==9891== by 0x4EF139B: dlopen_doit (in /usr/lib64/libdl-2.30.so)
==9891== by 0x4E60407: _dl_catch_exception (in /usr/lib64/libc-2.30.so)
==9891== by 0x4E604D2: _dl_catch_error (in /usr/lib64/libc-2.30.so)
==9891== by 0x4EF1B08: _dlerror_run (in /usr/lib64/libdl-2.30.so)
==9891== by 0x4EF1429: dlopen@@GLIBC_2.2.5 (in /usr/lib64/libdl-2.30.so)
==9891== by 0x493CC37: ??? (in /usr/lib64/libSDL2-2.0.so.0.12.0)
==9891== by 0x4941DC5: ??? (in /usr/lib64/libSDL2-2.0.so.0.12.0)
==9891== by 0x494C3CC: ??? (in /usr/lib64/libSDL2-2.0.so.0.12.0)
我想知道它是否是某种库依赖性或误报,或者是模糊地指向与我的代码相关的东西....
谁能给我更多关于如何解释 definitely lost
字节片段的见解?
该输出的问题是使用 SDL2
来自没有调试信息编译的包存储库。
因此从源代码重新编译 SDL2
库,包括调试信息,使 valgrind
报告更加清晰,并导致解决和理解问题。
只是尝试在 linux/GCC 下用 C++17
编写的小型 SDL2 程序中检测一些潜在问题valgrind 报告了很多关于 vg_replace_malloc.c
的嘈杂内存泄漏,建议从官方文档中忽略 (link)
(Ignore the "vg_replace_malloc.c", that's an implementation detail.)
但是后面分析,有一个块:
==9891== 256 bytes in 4 blocks are definitely lost in loss record 2,243 of 2,414
==9891== at 0x483980B: malloc (vg_replace_malloc.c:309)
==9891== by 0x40156B3: dl_open_worker (in /usr/lib64/ld-2.30.so)
==9891== by 0x4E60407: _dl_catch_exception (in /usr/lib64/libc-2.30.so)
==9891== by 0x40148FD: _dl_open (in /usr/lib64/ld-2.30.so)
==9891== by 0x4EF139B: dlopen_doit (in /usr/lib64/libdl-2.30.so)
==9891== by 0x4E60407: _dl_catch_exception (in /usr/lib64/libc-2.30.so)
==9891== by 0x4E604D2: _dl_catch_error (in /usr/lib64/libc-2.30.so)
==9891== by 0x4EF1B08: _dlerror_run (in /usr/lib64/libdl-2.30.so)
==9891== by 0x4EF1429: dlopen@@GLIBC_2.2.5 (in /usr/lib64/libdl-2.30.so)
==9891== by 0x493CC37: ??? (in /usr/lib64/libSDL2-2.0.so.0.12.0)
==9891== by 0x4941DC5: ??? (in /usr/lib64/libSDL2-2.0.so.0.12.0)
==9891== by 0x494C3CC: ??? (in /usr/lib64/libSDL2-2.0.so.0.12.0)
我想知道它是否是某种库依赖性或误报,或者是模糊地指向与我的代码相关的东西....
谁能给我更多关于如何解释 definitely lost
字节片段的见解?
该输出的问题是使用 SDL2
来自没有调试信息编译的包存储库。
因此从源代码重新编译 SDL2
库,包括调试信息,使 valgrind
报告更加清晰,并导致解决和理解问题。