SDL内存使用情况

时间:2011-04-09 19:58:12

标签: c memory-leaks sdl valgrind

我正在编写一个非常基本的SDL应用程序,但是当我通过valgrind运行它时,它报告了几个显然与SDL库相关的丢失块(在你问它之前,我确实调用了SDL_Quit,或者更准确地说我调用了{{ 1}})。这是一个例子:

atexit(SDL_Quit)

我在这里搜索StackOverflow并发现了一个类似的问题。答案显然,在库中分配了一些小缓冲区,作者从不关心这些缓冲区。我的问题是,这种方法的动机是什么?为什么要分配一些东西,然后故意不==2525== 192 (16 direct, 176 indirect) bytes in 1 blocks are definitely lost in loss record 107 of 131 ==2525== at 0x4C25502: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2525== by 0x644244A: ??? (in /usr/lib/libX11.so.6.3.0) ==2525== by 0x6442989: ??? (in /usr/lib/libX11.so.6.3.0) ==2525== by 0x64440A2: ??? (in /usr/lib/libX11.so.6.3.0) ==2525== by 0x6444915: _XlcCreateLC (in /usr/lib/libX11.so.6.3.0) ==2525== by 0x6462B5F: _XlcDefaultLoader (in /usr/lib/libX11.so.6.3.0) ==2525== by 0x644C325: _XOpenLC (in /usr/lib/libX11.so.6.3.0) ==2525== by 0x644C467: _XlcCurrentLC (in /usr/lib/libX11.so.6.3.0) ==2525== by 0x644C4BD: XSetLocaleModifiers (in /usr/lib/libX11.so.6.3.0) ==2525== by 0x4E69EED: ??? (in /usr/lib/libSDL-1.2.so.0.11.3) ==2525== by 0x4E6A57F: ??? (in /usr/lib/libSDL-1.2.so.0.11.3) ==2525== by 0x4E59E00: SDL_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.3) 呢?

1 个答案:

答案 0 :(得分:1)

如果需要缓冲区直到程序结束,则无需释放它们。当一个程序退出它正在使用的所有内存时,无论如何都会被操作系统释放。如果程序在退出之前打算释放块只会减慢程序的退出速度。