2011-07-06 28 views
1

当设置的OpenAL,仪器告诉我的泄漏,我这里泄露alContext:我必须在这里发布OpenAL上下文吗?

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?

+0

'alContext'是该函数的本地变量,还是在返回调用后它仍然存在? – ZoFreX

+0

之后依然存在。实例变量。 – openfrog

回答

1

这里是你会怎么清理:

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

而你只需调用这些方法时,你与上下文...这取决于你的应用程序,你如何使用它做,但可能在dealloc某处。

+0

只要我的应用程序退出,上下文不再需要。但在那之前,我需要它。谢谢。 – openfrog

相关问题