C 学习核心音频第8章示例未运行

C 学习核心音频第8章示例未运行,c,macos,core-audio,C,Macos,Core Audio,我刚刚开始学习核心音频,正在学习亚当森和阿维拉的《学习核心音频》中的所有示例 第一个不起作用的示例(使用web站点中的示例代码和项目)在第8章中。它根本不起任何作用 有时,但不是每次运行程序时,最后一行也会出错 AUGraphClose(player.graph); CH08_AUGraphInput(9781,0x7fff78ee8960)malloc:*对象0x104003600的错误:未分配要释放的指针 *在malloc\u error\u break中设置断点以进行调试 我只是想看看是

我刚刚开始学习核心音频,正在学习亚当森和阿维拉的《学习核心音频》中的所有示例

第一个不起作用的示例(使用web站点中的示例代码和项目)在第8章中。它根本不起任何作用

有时,但不是每次运行程序时,最后一行也会出错

AUGraphClose(player.graph);
CH08_AUGraphInput(9781,0x7fff78ee8960)malloc:*对象0x104003600的错误:未分配要释放的指针 *在malloc\u error\u break中设置断点以进行调试


我只是想看看是否有人遇到过这个问题,因为我正在努力找出可能出现的问题。

好的,我通过偶然使用断点来调试这个问题

时间戳的mTimestamp字段似乎没有在第一次输出回调中正确写入。第一次调用时,它始终显示为0。在第一次调用之后,它的大小与输入时间戳的值相似,远远大于0。因此,从第一个样本计算的
inToOutSampleTimeOffset
不是一个有意义的值,它会弄乱环形缓冲区

为了解决这个问题,我补充道

if (inTimeStamp->mSampleTime > 0.0) {

在第97行,并阻止了函数其余部分的执行。它现在可以工作了,尽管它确实会在开始时发出可怕的弹出声。

好的,我通过偶然使用断点成功地调试了它

时间戳的mTimestamp字段似乎没有在第一次输出回调中正确写入。第一次调用时,它始终显示为0。在第一次调用之后,它的大小与输入时间戳的值相似,远远大于0。因此,从第一个样本计算的
inToOutSampleTimeOffset
不是一个有意义的值,它会弄乱环形缓冲区

为了解决这个问题,我补充道

if (inTimeStamp->mSampleTime > 0.0) {
在第97行,并阻止了函数其余部分的执行。它现在起作用了,尽管它一开始确实会发出可怕的砰砰声