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

标签 c++ pointers audio exc-bad-access aiff

我一直在尝试将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”。

关于c++ - 试图读取AIFF文件意外错误与指针位置等有关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55212700/

相关文章:

c - gnuplot - 轴上的物理尺寸

java - 模拟器无法播放声音

android - 音频在Samsung Galaxy设备上突然停止工作(Ionic Cordova Apps)

c++ - 从文件 C++ 访问对象时出现读取访问冲突。

c++ - OpenGL:四边形似乎没有正确剔除

C 指针和地址

c - 如何将结构体指针传递给函数?

c++ - 为什么要使用 char 数组来存储以二进制模式打开的文件的内容?

c++ - 不正确的宏定义没有错误

c++ - 如何区分构造函数