0

だから私は問題を抱えています Image と呼ばれる構造体と関数 LoadImage があり、すべて正常に動作しますが、次のようなものがある場合:

アニメーション.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 構造体を指定すると正常に動作します。

したがって、関数が機能することを明確にするために、別の構造体から呼び出す構造体の画像を指定すると機能しません。

4

1 に答える 1

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 のメモリにスポットがありません。

于 2013-05-10T18:02:11.663 に答える