1

LibAIFF 库中有这个函数:

AIFF_Ref AIFF_OpenFile(const char* name, int flags);

它接受 aconst char*但供我使用,名称必须是 a 类型,char*因为我需要根据我的 AIFF 文件在我的目录中的位置(我可以正确完成)来构建它 - 具体来说,在我的情况下,名称是 AIFF 文件小路。

但我认为我因此遇到了一些问题(虽然我不确定)。当我发送函数 a 时会发生什么char*?我注意到的不良行为发生在关联AIFF_CloseFile函数中,该函数遇到一些问题,这些问题似乎是基于我发送给它的文件路径随机出现的。例如,如果我有完全相同的 AIFF 文件,其中两个名称仅更改了一个字母,则错误(这与AIFF_CloseFile尝试释放在已释放或尚未释放的结构中定义的缓冲区有关)分配)发生在其中一个而不是另一个。如果我注释掉对关闭文件函数的调用,一切正常,因为 AIFF 文件已成功打开并读取,但我不应该这样做。

任何帮助都感激不尽。谢谢

4

1 回答 1

4

在预期achar *时使用 a 很好。const char *

如果一个函数接受 aconst char *它只是意味着该函数根本不会更改字符串内容。

不过反过来也不好。

编辑:

我不知道您正在使用的库。如果库记住了您使用的字符串,但没有制作自己的内部副本,这可能是一个问题。不过,这将是一个糟糕的图书馆..

于 2014-03-17T04:28:16.067 回答