LibAIFF库中有这个功能:
AIFF_Ref AIFF_OpenFile(const char* name, int flags);
它接受const char*
但是对于我的使用,名称必须是char*
类型,因为我需要根据我的目录上的AIFF文件的位置来构建它(我可以正确完成) - 具体来说,在我的情况下,名称是AIFF文件路径。
但我认为我因此遇到了一些问题(我不确定)。当我发送函数char*
时会发生什么?我注意到的坏行为发生在关联的AIFF_CloseFile
函数中,该函数遇到了一些问题,这些问题似乎是随机发送给我发送给它的文件路径。例如,如果我有完全相同的AIFF文件,其中两个名称只改变了一个字母,那么错误(与AIFF_CloseFile
有关,试图释放在已经被释放的结构中定义的缓冲区或者尚未分配)与其中一个发生但不发生另一个发生。如果我注释掉对close文件函数的调用,那么一切都可以成功打开并读取AIFF文件,但我不应该这样做。
任何帮助将不胜感激。感谢
答案 0 :(得分:4)
当预期char *
时,可以使用const char *
。
如果某个函数接受const char *
,则只表示该函数根本不会更改字符串内容。
相反,另一种方式并不好。
编辑:
我不知道您正在使用的库..如果库记住您使用的字符串,但是没有制作自己的内部副本,则可能会出现问题。这将是一个糟糕的图书馆..