首先,我想说我不是一名专业的程序员 并且在那之后,我会正确处理我的问题。
所以我有这两个结构:
struct hitPointData{
int size;
int maxHp;
int currentHp;
SDL_Rect healthBarCurrent;
SDL_Rect healthBarMax;
SDL_Surface* healthSurface;
SDL_Texture* healthTexture;
};
struct PlayableCharacter{
SDL_Rect playerBox;
int xSpeed;
int ySpeed;
struct hitPointData playerHp;
};
我遇到的问题是我在这个函数调用中遇到了分段错误:
SDL_FillRect(player->playerHp.healthSurface,
NULL, // Not actually supposed to be NULL, just here until i get fillrect working properly
SDL_MapRGB(player->playerHp.healthSurface->format,255,0,0));
我认为它可能与表面/表面>格式有关,因为当我这样做时:
player->playerHp.healthSurface = SDL_CreateRGBSurface(0,32,16,4,0,255,255,0);
我没有得到分段错误但是Fillrect返回错误代码,说明不支持该格式。
这也是我初始化播放器的方式:
struct PlayableCharacter *player = malloc(sizeof(struct PlayableCharacter));
我知道分段错误基本上意味着你在你允许的内存之外写作,我怀疑我必须在某个地方使用malloc,但我不确定在哪里或如何。
任何帮助都很受欢迎!