我目前正在使用 Dirac(OSStatus) readFloatsConsecutive:(SInt64)numFrames intoArray:(float**)audio
函数从文件中读取音频浮点数。我创建了一个浮点指针**
arrayToFill = malloc(channelCount * sizeof(float*));
for(int i = 0; i < channelCount; ++i)
{
arrayToFill[i] = malloc(frameCount * sizeof(float));
}
并将它传递给 Dirac 函数,当所有浮点数都被分配时,我会得到一个巨大的内存峰值。
在仪器中,我得到了大约 90MB 的峰值,并且由于某种原因,这个应用程序仍然在设备上运行。
例如 15839544 * 2 个浮点数会导致这些巨大的峰值吗?
怎么会占用这么多内存?是虚拟内存吗?我没有看到任何虚拟机分配。
我看不出加载单个文件(例如 5MB 音频文件)如何导致内存中出现如此巨大的峰值。