Ios AudioBufferList内存使用量增加

Ios AudioBufferList内存使用量增加,ios,c,memory-management,malloc,core-audio,Ios,C,Memory Management,Malloc,Core Audio,我在循环中有以下代码(每1/4秒调用一次)。 (我已经删除了代码的其余部分,以便将问题缩小到以下内容) 以及freeABL功能: void freeABL(AudioBufferList *abl) { for (int i = 0; i < abl->mNumberBuffers; i++) { free(abl->mBuffers[i].mData); abl->mBuffers[i].mData = NULL;

我在循环中有以下代码(每1/4秒调用一次)。 (我已经删除了代码的其余部分,以便将问题缩小到以下内容)

以及freeABL功能:

void freeABL(AudioBufferList *abl)
{

    for (int i = 0; i < abl->mNumberBuffers; i++)
    {
        free(abl->mBuffers[i].mData);
        abl->mBuffers[i].mData = NULL;
    }
    free(abl);
    abl = NULL;
}
void freeABL(音频缓冲列表*abl)
{
对于(int i=0;imNumberBuffers;i++)
{
免费(abl->mBuffers[i].mData);
abl->mBuffers[i].mData=NULL;
}
自由(abl);
abl=NULL;
}
我的问题是,每次循环都会增加我应用程序的内存消耗,直到我收到内存警告


@Nishithjai我几乎看不出这有什么帮助。如果您没有任何信息可以帮助解决我的问题,那么请不要评论。我怀疑这是在XCode下。在IDE下是否有任何内存调试器可用于帮助诊断泄漏?我使用过仪器,它没有显示任何泄漏,但它确实显示NSMallocBlock以大约每秒0.1MB的速度不断增加。您不需要这样做:
abl=NULL在free()之后。除此之外,您提到的代码还可以。这个问题一定是发生在代码的其他地方。谢谢@askmish。我相信我已经把范围缩小到让另一个后台线程(嵌套线程?)调用这段代码,我想知道我是否最终陷入了某种死锁/竞争状态。无论如何,我从代码中删除了dispatch_asynch,它修复了内存问题。
void freeABL(AudioBufferList *abl)
{

    for (int i = 0; i < abl->mNumberBuffers; i++)
    {
        free(abl->mBuffers[i].mData);
        abl->mBuffers[i].mData = NULL;
    }
    free(abl);
    abl = NULL;
}