【发布时间】:2021-08-01 10:39:31
【问题描述】:
我正在尝试用 C++ 学习 SDL2,
每次我尝试填充表面时都会收到此错误,在互联网上搜索解决方案但尚未找到:
SDL_Surface* Surface = NULL;
SDL_FillRect(Surface, NULL, SDL_MapRGB(Surface->format, 0, 255, 0));
每次我运行它时,它都不会显示错误,但会破坏代码并显示一个 X 和一个带有文本“异常抛出:读取访问冲突。Surface was nullptr”的小框。在 FillRect 线附近。我可以单击“复制详细信息”,然后复制“抛出异常:读取访问冲突。 ** 表面 ** 为 nullptr。发生”
【问题讨论】:
-
该错误消息中有什么不清楚的地方?
Surface显然是nullptr。 -
正如您通常不能
int *foo = NULL; foo[0] = 0;一样,您不能访问尚未创建的表面。你打算用它做什么?手动创建表面,例如SDL_CreateRGBSurface可以,但那又如何呢?您可能应该编辑问题以包含具有预期用途的代码片段,例如将图像放在屏幕上(但什么是屏幕?为什么不填充屏幕本身)?
标签: c++ visual-studio sdl-2