分配结构数组时遇到问题

时间:2012-03-31 12:36:47

标签: c

我的项目要求我动态分配内存。我做错了什么?

/*Setting up my Struture*/
struct album_ {
  int num_tracks;
  struct tracks_ tracks;
  int playlist_hits[];
};
typedef struct album_ album;

/*Try to allocate memory for structure*/

fscanf(album_file,"%d", &number_of_album);

  album *all_albums_p = (album *)malloc(sizeof(album)*number_of_album);

  for(i=0;i < number_of_album; i++){
    all_albums_p[i].num_tracks = (int *)malloc(sizeof(int));
    all_albums_p[i].num_tracks = i+1;
    printf("%d\n",all_albums_p[i].num_tracks);
  }

Error Message
warning: assignment makes integer from pointer without a cast [enabled by default]

另外,如果我想返回此数组,那么return all_albums_p是否正确?

2 个答案:

答案 0 :(得分:3)

这一行

all_albums_p[i].num_tracks = (int *)malloc(sizeof(int));

应该是

all_albums_p[i].playlist_hits = (int *)malloc(sizeof(int));

由于您要分配album数组,因此需要使用指针替换灵活数组成员:playlist_hits应更改为int*

答案 1 :(得分:0)

抱怨线是

all_albums_p[i].num_tracks = (int *)malloc(sizeof(int));

为它指定一个指向int的指针。这将导致内存泄漏。 我不知道你打算用什么

这一行也很奇怪

all_albums_p[i].num_tracks = i+1;

你有n张专辑,你说曲目的数量将取决于专辑的索引。这是不太可能的。

第一张专辑有1首曲目。

千张专辑有1000首曲目。

听起来不太理性