[英]Having trouble allocating a structure array
我的项目要求我动态分配内存。 我究竟做错了什么?
/*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
?
这条线
all_albums_p[i].num_tracks = (int *)malloc(sizeof(int));
应该
all_albums_p[i].playlist_hits = (int *)malloc(sizeof(int));
由于您要分配一个album
数组,因此需要使用指针替换灵活数组成员: playlist_hits
应更改为int*
。
抱怨线是
all_albums_p[i].num_tracks = (int *)malloc(sizeof(int));
你为它指定一个int指针。 这将导致内存泄漏。 我不知道你打算用它做什么
这条线也很奇怪
all_albums_p[i].num_tracks = i+1;
你有n张专辑,你说曲目的数量将取决于专辑的索引。 这是不太可能的。
第一张专辑有1首曲目。
第1000张专辑有1000首曲目。
听起来不太合理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.