尝试读取与指针位置等相关的 AIFF 文件意外错误

Trying to read AIFF Files Unexpected Error to do with pointer location etc

我一直在尝试将 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() returns NULL...所以如果 fopen() 出于某种原因失败(很可能是因为指定的文件没有t 存在或无法打开以供阅读),那么当 fread() 尝试取消引用 NULL 指针时,您的程序将崩溃。

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