valgrind报告的SDL2 linux内存泄漏问题。

问题描述 投票:0回答:1

只是想在linuxGCC下用C++17编写的SDL2小程序上检测一些潜在的问题。

valgrind报告大量嘈杂的内存泄漏事件。vg_replace_malloc.c 建议忽略正式文件中的内容。(链接)

(忽略 "vg_replace_malloc.c",那是一个实现细节)。

但是后面分析,有一个块的。

==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 字节片段?

c++ valgrind gnu sdl-2
1个回答
0
投票

该输出的问题是使用 SDL2 在编译时没有调试信息的包库中。

因此,重新编译 SDL2 库的源码,包括调试信息,使之成为了 valgrind 报告清晰了很多,引导解决和理解了问题。

© www.soinside.com 2019 - 2024. All rights reserved.