gpt4 book ai didi

c - SDL内存使用

转载 作者:太空宇宙 更新时间:2023-11-04 04:06:13 25 4
gpt4 key购买 nike

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

==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)

我在 StackOverflow 上搜索了这里,发现了一个类似的问题。答案显然是,库中分配了一些小的缓冲区,编写者从不关心释放这些缓冲区。我的问题是,这种方法的动机是什么?为什么分配一些东西然后故意不 free() 它?

最佳答案

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

关于c - SDL内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com