質問: [[NSMutableData alloc] init]; /* ~(中略)~ */ return noErr; } ``` 以上、ご教示ください。
回答: 私はMacのAudioUnitはそれなりに知っていますがObjective-Cの メモリ管理システムにはあまり詳しくない、という者です。 で、このソースは一見しただけでリークしそうな感じがする実装になっています。 allocは、メモリを確保するためのメソッドなので、呼ばれるたびに メモリを確保しますが、開放されている様子がないからです。 AURenderCallbackはかなりの頻度で実行されるので メモリ使用量が増えていくだろうな、というのがソースをみただけで想像できます。 そもそも、AURenderCallback内でメモリ確保の処理を実行するのは あまり良い戦略ではないので、NSMutableData* dataをAURenderCallback内で はallocしないように処理を修正することをおすすめします。 やり方はいろいろとあると思いますが、私ならばAURenderCallbackの引数として渡されてくる AudioProcessor側でallocしておき、AURenderCallbackで使うように実装します。 このソースからだとAURenderCallback以外の部分がどうなっているか不明なので、 具体的なソースは書きませんが、AURenderCallback内ではメモリ確保の処理はできないことを 前提にプログラムを書いたほうが良いことが多いです。