这里真的很基本的问题:
我看到一堆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;
}
答案 0 :(得分:1)
如所调用的,它将&clientFormat
的内存设置为sizeof(clientFormat)
,0
到0
。这是必需的,因为在使用malloc()
和大多数其他分配函数分配后,C中的内存不会被清除{{1}}。