SDL_Fill在struct内部的分段错误/结构与指针混淆

时间:2016-04-20 17:14:23

标签: c struct malloc sdl

首先,我想说我不是一名专业的程序员 并且在那之后,我会正确处理我的问题。

所以我有这两个结构:

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,但我不确定在哪里或如何。

任何帮助都很受欢迎!

0 个答案:

没有答案