我的项目要求我动态分配内存。我做错什么了?
/*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*
。关于c - 分配结构数组时遇到问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9955908/