Audio SDL_中的内存泄漏打开

Audio SDL_中的内存泄漏打开,audio,sdl,Audio,Sdl,环境:Ubuntu 11.04。SDL 1.2.15 在我基于SDL的应用程序中,我一个接一个地播放多个视频剪辑。对于每个视频,我在开始时调用SDL_OpenAudio,在结束时调用SDL_CloseAudio。但是,每一轮都会留下两块未折叠的内存块。它们都来自内部SDL功能 ==17035== 372 bytes in 3 blocks are definitely lost in loss record 139 of 169 ==17035== at 0x4C28F9F: mall

环境:Ubuntu 11.04。SDL 1.2.15

在我基于SDL的应用程序中,我一个接一个地播放多个视频剪辑。对于每个视频,我在开始时调用SDL_OpenAudio,在结束时调用SDL_CloseAudio。但是,每一轮都会留下两块未折叠的内存块。它们都来自内部SDL功能



==17035== 372 bytes in 3 blocks are definitely lost in loss record 139 of 169
==17035==    at 0x4C28F9F: malloc (vg_replace_malloc.c:236)
==17035==    by 0xB2B0564: ??? (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
==17035==    by 0xB2B062A: ??? (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
==17035==    by 0xB2B01CA: xcb_connect_to_display_with_auth_info (in /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
==17035==    by 0xCC650ED: pa_client_conf_from_x11 (in /usr/lib/x86_64-linux-gnu/libpulsecommon-1.0.so)
==17035==    by 0xC9ED83E: pa_context_new_with_proplist (in /usr/lib/x86_64-linux-gnu/libpulse.so.0.13.4)
==17035==    by 0xC7DD9F2: pa_simple_new (in /usr/lib/x86_64-linux-gnu/libpulse-simple.so.0.0.3)
==17035==    by 0x418AED: Audio_Available (SDL_pulseaudio.c:235)
==17035==    by 0x405893: SDL_AudioInit (SDL_audio.c:360)
==17035==    by 0x404A79: SDL_InitSubSystem (SDL.c:105)
==17035==    by 0x405E59: SDL_OpenAudio (SDL_audio.c:404)


我想知道我的代码中是否有什么地方可能出错。我已经验证了SDL_CloseAudio确实被调用。

我不是SDL或OpenGL方面的专家,但我认为大多数软件都会在某个点泄漏内存。有关更多信息,请参阅本文:


好的一面是,SDL只泄漏了374字节,与大多数系统提供的数据相比,这只是几便士。从长远来看,这不会有太大的区别。

有人吗?请帮忙。早些时候,我想我可以给SDL_OpenAudio打一次电话。但是,我没有看到任何其他API来更改所需的音频规格。Regars,Peter。我们不使用SDL,但pulseaudio,
pa_context_new_with_proplist
会在您的回溯中弹出,同样的函数也会导致我们的memleaks。我仍在调查中,但第一次调查显示pulseaudio的bugtracker中有一些类似的bug,比如。这个memleak似乎出现在另一个点上,但并没有带来太多希望:bug报告中提到的泄漏似乎“由于线程问题而不可避免”。希望这不是这次泄密的原因…谢谢Richard。在我们的例子中,视频剪辑全天候播放。如果SDL每次都继续泄漏,我们最终会耗尽内存。抱歉,但这不仅没有帮助,而且它还指向了完全错误的方向:接受软件泄漏内存。Memleaks是最糟糕的错误之一(最糟糕的是造成未定义的行为),因为如果它们未被发现,它们将导致“无中生有”的崩溃,一旦你让它们传播到你的代码中,真的很难调试。