为什么我尝试在opengl中加载的3ds文件会出现此未处理的异常? 我尝试用C++在OpenGL中加载一个3DS图像,但是每次我尝试运行这个程序时,它总是在程序的某个点上中断。我试图通过在互联网上查找问题来解决它,但我没有找到任何问题。 这是错误消息 ***.exe中0x7AE3E73F(ucrtbased.dll)处未处理的异常:0xC0000005:访问冲突写入位置0x004EF000。

为什么我尝试在opengl中加载的3ds文件会出现此未处理的异常? 我尝试用C++在OpenGL中加载一个3DS图像,但是每次我尝试运行这个程序时,它总是在程序的某个点上中断。我试图通过在互联网上查找问题来解决它,但我没有找到任何问题。 这是错误消息 ***.exe中0x7AE3E73F(ucrtbased.dll)处未处理的异常:0xC0000005:访问冲突写入位置0x004EF000。,c++,opengl,3ds,C++,Opengl,3ds,这就是代码中存在问题的部分 case 0x4120: fread(&l_qty, sizeof(unsigned short), 1, l_file); p_object->polygons_qty = l_qty; printf("Number of polygons: %d\n", l_qty); for (i = 0; i < l_qty; i++) { fread(

这就是代码中存在问题的部分

case 0x4120:
        fread(&l_qty, sizeof(unsigned short), 1, l_file);
        p_object->polygons_qty = l_qty;
        printf("Number of polygons: %d\n", l_qty);
        for (i = 0; i < l_qty; i++)
        {
            fread(&p_object->polygon[i].a, sizeof(unsigned short), 1, l_file);
            printf("Polygon point a: %d\n", p_object->polygon[i].a);
            fread(&p_object->polygon[i].b, sizeof(unsigned short), 1, l_file);
            printf("Polygon point b: %d\n", p_object->polygon[i].b);
            fread(&p_object->polygon[i].c, sizeof(unsigned short), 1, l_file);
            printf("Polygon point c: %d\n", p_object->polygon[i].c);
            fread(&l_face_flags, sizeof(unsigned short), 1, l_file);
            printf("Face flags: %x\n", l_face_flags);
        }
        break;
案例0x4120:
fread(&l_数量,sizeof(无符号短),1,l_文件);
p_对象->多边形数量=l_数量;
printf(“多边形数:%d\n”,l\u数量);
对于(i=0;ipolygon[i].a,sizeof(unsigned short),1,l_文件);
printf(“多边形点a:%d\n”,p_object->Polygon[i].a);
fread(&p_object->polygon[i].b,sizeof(unsigned short),1,l_文件);
printf(“多边形点b:%d\n”,p_object->Polygon[i].b);
fread(&p_object->polygon[i].c,sizeof(unsigned short),1,l_文件);
printf(“多边形点c:%d\n”,p_object->Polygon[i].c);
fread(&l_面_标志,sizeof(无符号短),1,l_文件);
printf(“面标志:%x\n”,l\u面标志);
}
打破

异常
0xC0000005
表示您正在访问不属于您的内存(分段错误或访问冲突…)。位置
0x004EF000
是本地内存空间中错误访问(读或写)的偏移量

如果你检查了所有的指针,发现一个接近这个数字,但略小于这个数字,你可能会发现你正在访问的东西超出了范围

如果数字很小,则通常意味着您使用的是空指针。您的位置距零约5 MB,因此,如果您有某个数组或类如此之大,则最有可能的情况是使用指向它的空指针,而不是实际地址


这可能发生在变量名发生冲突时,或者在传递指针逻辑时出错时,或者在没有锁的情况下进行多线程操作时,或者忘记执行
new
操作或未测试
new
是否内存不足时

没有足够的信息。对象中的
多边形
数组有多大?您读取了一个大小,但我没有看到您调整任何大小或分配内存。考虑一下。你可能已经超出了数组的界限。