我一直在尝试将AIFF文件读入许多变量,并且在尝试读取数据块的数据部分时遇到了问题。我收到错误:线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x7ffeee1bbce8)。我知道这通常意味着指针有一个问题但是我已经检查并运行了这么多测试并且指针没有到达文件的末尾所以它不是那样的。请有人看看我试图制作一个非常简化的版本,以显示我遇到的问题。
int main()
{
FILE * AIFF;
int32_t Datasize = 27539504;
int16_t Data[(Datasize - 8)/2];
AIFF = fopen("/Volumes/Audio CD/Audio Track.aiff", "r");
fread(Data, 2, (Datasize - 8)/2, AIFF);
return 0;
}
错误出现在fopen线上。这也是在64位Mac上的Xcode中的C ++中。
谢谢。
您的代码似乎没有检查fopen()
是否返回NULL ...所以如果fopen()
因任何原因失败(很可能因为指定的文件不存在或无法打开阅读),那么您的程序将崩溃当fread()
尝试取消引用NULL指针时。
旁注:由于.AIFF文件是二进制文件,而不是ASCII,你应该将“rb”作为第二个参数传递给fopen()
而不是“r”。