【发布时间】:2015-03-15 21:17:34
【问题描述】:
如何正确关闭和释放 ALSA(和硬件参数)资源? 我发现了很多例子。都不同。都有memleak。
例如:
#include <stdio.h>
#include <unistd.h>
#include <alsa/asoundlib.h>
int
main()
{
snd_pcm_t *dev;
snd_pcm_open(&dev, "default", SND_PCM_STREAM_PLAYBACK, 0);
snd_pcm_close(dev);
return 0;
}
Valgrind 报告:
==19586== LEAK SUMMARY:
==19586== definitely lost: 0 bytes in 0 blocks
==19586== indirectly lost: 0 bytes in 0 blocks
==19586== possibly lost: 65,525 bytes in 2,020 blocks
==19586== still reachable: 298 bytes in 6 blocks
==19586== suppressed: 0 bytes in 0 blocks
==19586== Reachable blocks (those to which a pointer was found) are not shown.
==19586== To see them, rerun with: --leak-check=full --show-reachable=yes
==19586==
==19586== ERROR SUMMARY: 116 errors from 116 contexts (suppressed: 4 from 4)
--19586--
--19586-- used_suppression: 2 dl-hack3-cond-1
--19586-- used_suppression: 2 glibc-2.5.x-on-SUSE-10.2-(PPC)-2a
==19586==
==19586== ERROR SUMMARY: 116 errors from 116 contexts (suppressed: 4 from 4)
更新:
没有 snd_pcm_close() 我们有来自 117 个上下文的 117 个错误)))
【问题讨论】:
-
alsa - mem leak?的可能重复
-
@CL。在哪里继续讨论?这里?因为仍然有 memleak(来自 2 个上下文的 2 个错误)
-
那些上下文是什么?