CoreAudio框架使用一个声明如下的结构体:
据我所知,这基本上是一个长度可变的
或者
struct AudioBufferList
{
UInt32 mNumberBuffers;
AudioBuffer mBuffers[1]; // this is a variable length array of mNumberBuffers elements
};
typedef struct AudioBufferList AudioBufferList;
据我所知,这基本上是一个长度可变的
AudioBuffer
结构体集合。分配这样一个结构体的“正确”方法是什么?AudioBufferList *list = (AudioBufferList *)malloc(sizeof(AudioBufferList));
你觉得这个可行吗?
我在互联网上看到了各种各样的例子,比如:
calloc(1, offsetof(AudioBufferList, mBuffers) +
(sizeof(AudioBuffer) * numBuffers))
或者
malloc(sizeof(AudioBufferList) + sizeof(AudioBuffer) * (numBuffers - 1))
mNumberBuffers <= 1
,这个会起作用吗?另外两个例子每个都分配相同数量的内存,如果在mBuffers
后没有填充。 - M.M