android - 是否需要释放来自 OpenSL ES 音频播放器的已完成缓冲区?

标签 android c android-ndk opensl

只是为了确认。当通过适用于 Android 的 OpenSL ES 创建的音频播放器完成播放缓冲区时,该缓冲区是否会被垃圾收集器自动释放?还是我需要自己释放缓冲区?

如果是后者,我需要一些帮助。但就目前而言,我不会发布任何代码,直到我被告知我需要自己做......

最佳答案

缓冲队列本身并不实际分配缓冲内存(或需要释放它),您将指针传递给您通过“enqueue”函数分配的内存。播放完缓冲区后,您需要释放分配的内存。

由于 OpenSL ES 是 C++ 中的原生库,它对垃圾回收一无所知,您为 API 分配的任何内存都必须由您释放,并且您创建的对象必须调用“销毁”来清理内部内存.

关于android - 是否需要释放来自 OpenSL ES 音频播放器的已完成缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6031213/

相关文章:

c - 我们在哪里可以在 C 中使用函数指针,函数指针有什么用途

Android 俯仰和滚动问题

Android 可访问性 : Talkback says 'out of list' in addition to announcing an ImageView's content description

c - 如何将所有命令行参数连接在一起并打印出结果值?

c++ - FFmpeg 1.0 < 导致音频播放问题

java - Android NDK 使用 gradle 和 jitpack 引入 JNI 东西?

android - 无法访问 WallpaperService 中从 Java 传递的 native 代码中的 AAssetManager

java - 具有不同功能的多个 DialogFragments

Android:未调用 fragment 中的 onActivityResult

c - C 中的地址 : &(number)