函数接受const char*,但我需要传递一个char*



LibAIFF库中有这样一个函数:

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

它接受一个const char*,但是对于我的使用,name必须是类型a char*,因为我需要基于我的AIFF文件在我的目录上的位置来构建它(我可以正确地完成)-具体来说,在我的情况下,name是AIFF文件路径。

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

任何帮助都将非常感激。由于

当期望使用const char *时,使用char *是可以的。

如果一个函数接受const char *,那就意味着这个函数根本不会改变字符串的内容。

反过来就不好了。

编辑:

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

相关内容

  • 没有找到相关文章

最新更新