1
3
这是因为c99之前的c需要一个非零的常量数组大小。
和
和
所以
如果该结构仅为c99编写,那么声明将是
|
2
3
这就是所谓的“结构黑客”或(在C99中)可变长度数组(VLA)。基本的想法是“1”只是一个地方持有者。当您使用这个结构时,您可以动态地分配它,为实际数据分配足够的空间。例如,如果您需要10个缓冲区,您可以分配如下空间:
注意,由于它为一个audiobuffer分配空间作为结构本身的一部分,所以从您真正想要得到的空间添加到分配中的数字中减去一个。 |
3
2
这是我在PostgreSQL中也见过的一种技术,尽管它总是用注释来标记。
或者类似的。 基本上,它的工作方式是期望结构的用户理解mbuffer的大小1只是初始大小。为了调整结构的大小,他们重新分配()整个内容,并假设附加到末尾的任何内存“属于”mbuffer列表,即使结构定义本身没有解释这一点。 |
4
2
据我所知,
必须正确分配。或者一群小狗会死等等。 |
ddp · AKAudioPlayer:扬声器中没有声音,只有耳机 7 年前 |
whistler · Audiokit MIDI初始化令人困惑 7 年前 |
DEADBEEF · 如何在螺旋图中渲染特定的音频单元 7 年前 |
Jeff Coe · 确定哪个应用程序正在使用音频设备 8 年前 |
Rogare · 使用哪种方法实时读取音频样本 9 年前 |