2011-07-06 54 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

相關問題