我看了this example from the Portaudio page并想知道作者为何使用
data.rBufToRTData = PaUtil_AllocateMemory(sizeof(OceanWave*) * 256);
而不是
data.rBufToRTData = malloc(sizeof(OceanWave*) * 256);
我在Portaudio网站上找不到答案。
答案 0 :(得分:1)
您不应该使用PaUtil_AllocateMemory()
。它不是PortAudio公共API的一部分。我提交了bug against the example。谢谢你提出这个问题。
也就是说,该示例似乎旨在演示在PortAudio中使用某些低级内部数据结构。特别是PortAudio环缓冲区。它不应被视为使用PortAudio公共API的一个很好的例子。
答案 1 :(得分:0)
图书馆可以使用自己的分配功能有几个原因:
查看PortAudio源代码,看起来如果启用了内存跟踪,它们会使用分配方法跟踪引用,并确保内存全部分配在同一堆上。
无论哪种方式,最佳做法是使用库的分配和免费功能(如果提供)。