【问题标题】:Must I release the OpenAL context here?我必须在这里释放 OpenAL 上下文吗?
【发布时间】:2011-07-06 20:36:09
【问题描述】:

在设置 OpenAL 时,Leaks Instruments 告诉我我在这里泄漏了 alContext:

alDevice = alcOpenDevice(NULL);
if (!alDevice) {
    return NO;
}

alContext = alcCreateContext(alDevice, 0); // leaking!
if (!alContext) {
    return NO;
}

BOOL success = alcMakeContextCurrent(alContext);
if (!success) {
    return NO;
}

return YES;

我应该在哪里以及如何释放 alContext?

【问题讨论】:

  • alContext 是该函数的局部变量,还是在返回调用后仍然存在?
  • 之后依然存在。实例变量。

标签: objective-c c ios memory-management openal


【解决方案1】:

以下是清理的方法:

alcMakeContextCurrent(NULL);
alcDestroyContext(alContext);
alcCloseDevice(alDevice);

当你完成上下文时,你只需调用这些方法......这取决于你的应用程序以及你如何使用它,但可能在某处的 dealloc 中。

【讨论】:

  • 我的应用退出后就不再需要上下文了。但在那之前,我需要它。谢谢。
猜你喜欢
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多