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 *
,那就意味着这个函数根本不会改变字符串的内容。
反过来就不好了。
编辑:我不知道你在用哪个图书馆…如果库记住了您使用的字符串,但没有创建自己的内部副本,这可能是一个问题。这将是一个糟糕的库…