首页 > 解决方案 > 定义结构时可以使用 malloc 吗?

问题描述

有没有办法在结构的定义中为结构动态分配内存,如果做不到,为该结构动态分配内存的最佳方法是什么?

typedef struct user_t{
    char user_name[30];
    char email[50];
    int movieswatched;
    movie *movielist;
}user_t;

我想为 movielist 分配内存。

标签: c

解决方案


您可以使用灵活的数组成员

typedef struct user_t{
    char user_name[30];
    char email[50];
    int movieswatched;
    movie movielist[];  // The flexible array member,
                        // must always be last and declared as an array without a size
}user_t;

像这样的结构必须动态分配(使用 eg malloc),例如

user_t *my_user = malloc(sizeof *my_user + sizeof(movie) * 50);  // Allocate space for 50 movies

推荐阅读