memset做什么(在CoreAudio中使用)?

时间:2012-04-11 02:22:17

标签: objective-c ios

这里真的很基本的问题:

我看到一堆CoreAudio代码在处理结构时使用memset而我无法找出原因。这是来自.m ObjC文件。

以下是代码块中的行:

memset(&clientFormat, 0, sizeof(clientFormat));

// ---------------

    AudioStreamBasicDescription clientFormat;
    if ( sourceFormat.mFormatID == kAudioFormatLinearPCM ) {
    clientFormat = sourceFormat;
    } else {
    memset(&clientFormat, 0, sizeof(clientFormat));
    int sampleSize = sizeof(AudioSampleType);
    clientFormat.mFormatID = kAudioFormatLinearPCM;
    clientFormat.mFormatFlags = kAudioFormatFlagsCanonical;
    clientFormat.mBitsPerChannel = 8 * sampleSize;
    clientFormat.mChannelsPerFrame = sourceFormat.mChannelsPerFrame;
    clientFormat.mFramesPerPacket = 1;
    clientFormat.mBytesPerPacket = clientFormat.mBytesPerFrame = sourceFormat.mChannelsPerFrame * sampleSize;
    clientFormat.mSampleRate = sourceFormat.mSampleRate;
}

1 个答案:

答案 0 :(得分:1)

如所调用的,它将&clientFormat的内存设置为sizeof(clientFormat)00。这是必需的,因为在使用malloc()和大多数其他分配函数分配后,C中的内存不会被清除{{1}}。