現在、Diracの(OSStatus) readFloatsConsecutive:(SInt64)numFrames intoArray:(float**)audio
関数を使用してファイルからオーディオフロートを読み取っています。floatのポインタを作成します**
arrayToFill = malloc(channelCount * sizeof(float*));
for(int i = 0; i < channelCount; ++i)
{
arrayToFill[i] = malloc(frameCount * sizeof(float));
}
そしてそれをディラック関数に渡すと、すべてのフロートがマロックされたときに大量のメモリスパイクが発生します。
楽器では、約90MB増加するスパイクが発生しますが、何らかの理由で、このアプリは引き続きデバイス上で実行されます。
たとえば、15839544 * 2つのフロートがこれらの大規模なスパイクを引き起こしますか?
どうしてそんなに多くのメモリを使うことができるのでしょうか?仮想メモリですか?VMの割り当てが表示されません。
たとえば5MBのオーディオファイルの単一のファイルをロードすると、メモリにこのような大規模なスパイクが発生する可能性があるかどうかはわかりません。