我为什么要用“为什么?”;PaUtil“分配内存”;而不是malloc()?

我为什么要用“为什么?”;PaUtil“分配内存”;而不是malloc()?,c,memory-management,portaudio,C,Memory Management,Portaudio,我看了看,想知道作者为什么使用 data.rBufToRTData = PaUtil_AllocateMemory(sizeof(OceanWave*) * 256); 而不是 data.rBufToRTData = malloc(sizeof(OceanWave*) * 256); 我在Portaudio网站上找不到这个问题的答案。图书馆使用自己的分配功能有几个原因: 他们可以使用内存预分配或缓存来提高性能 它允许他们跟踪引用,从而更容易捕获内存泄漏 如果将Portaudio用作DLL,则

我看了看,想知道作者为什么使用

data.rBufToRTData = PaUtil_AllocateMemory(sizeof(OceanWave*) * 256);
而不是

data.rBufToRTData = malloc(sizeof(OceanWave*) * 256);

我在Portaudio网站上找不到这个问题的答案。

图书馆使用自己的分配功能有几个原因:

  • 他们可以使用内存预分配或缓存来提高性能
  • 它允许他们跟踪引用,从而更容易捕获内存泄漏
  • 如果将Portaudio用作DLL,则可以确保结构都分配在同一堆上
  • 确保所有内存分配都与特定字节边界对齐
  • 查看PortAudio源代码,如果启用了内存跟踪,他们似乎会使用分配方法来跟踪引用,并确保在同一堆上分配所有内存


    无论哪种方式,如果提供了库的分配函数和免费函数,最好使用它们。

    您不应该使用
    PaUtil\u AllocateMemory()
    。它不是PortAudio公共API的一部分。我已提出申请。谢谢你提出这个问题

    也就是说,这个示例似乎是为了演示在PortAudio中使用一些低级内部数据结构。特别是PortAudio环形缓冲区。不应将其视为使用PortAudio公共API的好例子