试图读取AIFF文件意外错误与指针位置等有关



我一直在尝试将AIFF文件读取到许多变量中,并且在尝试读取数据块的数据部分时遇到了一个问题。我得到错误:线程1:exc_bad_access(代码= 2,地址= 0x7ffeeee1bbce8)。我知道这通常意味着指针存在问题,但是我检查并运行了如此多的测试,并且指针没有碰到文件的末尾,因此不是这样。请有人看我试图制作一个非常简化的版本来显示我遇到的问题。

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;
}

错误线上出现了错误。另外,这是在64位Mac上的Xcode中的C 中。

谢谢。

您的代码似乎没有检查fopen()是否返回null ...因此,如果fopen()出于任何原因失败(很可能是因为指定的文件不存在或不存在,则可以打开以进行阅读),然后当fread()尝试取消零指针时,您的程序将崩溃。

旁注:由于.AIFF文件是二进制文件,而不是ASCII,您应该将" RB"作为第二个参数传递给fopen()而不是" R"。

相关内容

  • 没有找到相关文章

最新更新