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

时间:2014-03-17 04:26:13

标签: c char const aiff

LibAIFF库中有这个功能:

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

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

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

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:4)

当预期char *时,可以使用const char *

如果某个函数接受const char *,则只表示该函数根本不会更改字符串内容。

相反,另一种方式并不好。

编辑:

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