程序获取EXC\u错误访问

程序获取EXC\u错误访问,c,opengl,sdl,C,Opengl,Sdl,编译正常,但程序在此函数中停止。我有win版本,功能正常,但当我为Mac制作版本时,会出现以下异常:( } } SDL_解锁面(sc) } char fin[25]=“fin/final”; 伊托亚(雷兹,西斯洛斯尼姆库); strcat(fin,cislosinmku); strcat(fin,“.bmp”); SDL_SaveBMP(最终,财务); SDL_解锁表面(最终) SDL_自由曲面(最终); SDL_自由曲面(sc); SDL_自由曲面(项目); SDL_自由曲面(rek); S

编译正常,但程序在此函数中停止。我有win版本,功能正常,但当我为Mac制作版本时,会出现以下异常:(

} }

SDL_解锁面(sc)

}

char fin[25]=“fin/final”; 伊托亚(雷兹,西斯洛斯尼姆库); strcat(fin,cislosinmku); strcat(fin,“.bmp”); SDL_SaveBMP(最终,财务); SDL_解锁表面(最终)

SDL_自由曲面(最终); SDL_自由曲面(sc); SDL_自由曲面(项目); SDL_自由曲面(rek); SDL_退出(); 返回0;
}以下代码非常可疑:

 unsigned char *pixels[400 * 400 * 4];
 unsigned char *pixelsbuf[400 * 400 * 4];

首先,这些可能应该是char而不是char*,但更大的问题是,您正在堆栈上分配巨大的数据结构(如所写,每个数组2.5 MB)。我猜您正在超过可用堆栈。相反,它们应该动态分配(并正确调整大小).

请格式化您的代码。突出显示它并单击“{}”按钮。这将帮助其他阅读它的人发布一个最小的、完整的列表来演示问题。例如,
std::vector pixels(400*400*4);
 unsigned char *pixels[400 * 400 * 4];
 unsigned char *pixelsbuf[400 * 400 * 4];