SDL在struct中加载图像

时间:2013-05-10 17:58:20

标签: c struct sdl

所以我有一个问题我有一个名为Image和一个函数LoadImage的结构,它工作得很好但是当我有这样的东西时:

Animation.h

typedef struct Anim
{
Anim_data anim_data[20];
Image* img_anim; 
int curr;
}Anim;


void AnimLoad(char* name, Anim* a)
{
 ImageLoad("../../Resource/pingvin.jpeg", a->img_anim);

}

ImageLoad函数中断了我认为它与a-> img_anim有关但不知道它有什么问题,当我给出一个Image结构时工作正常我不会在另一个结构中。

所以只是为了清楚这个函数的工作原理,当我给它一个我从另一个结构调用的结构图时,它就没有了。

1 个答案:

答案 0 :(得分:3)

你需要像这样为a-> img_anim分配空间:

 Anim a;
 a.img_anim = malloc(sizeof(Image *));
 a.img_anim = Address of image.

然后在你的函数中它应该工作。

编辑:

在结构的C99规范中,除非您手动初始化它,否则不会对其进行初始化,例如:

 struct a{
 int member1;
 int member2;
 }

 struct a example = {.member1 = 2002,.member2 = 3003};  //This is initialization manually.  This is like manually allocating an array with
 //Int[] a = {1, 2, 3};

否则你需要这样做:

  struct a;
  a.member1 = malloc(sizeof(int));
  a.member2 = malloc(sizeof(int)); 

这给了member1和member2大小为4字节的内存(这是一个整数) 如果你不这样做,member1和member2在内存中没有斑点!