c - 定义结构时可以使用 malloc 吗?
问题描述
有没有办法在结构的定义中为结构动态分配内存,如果做不到,为该结构动态分配内存的最佳方法是什么?
typedef struct user_t{
char user_name[30];
char email[50];
int movieswatched;
movie *movielist;
}user_t;
我想为 movielist 分配内存。
解决方案
您可以使用灵活的数组成员:
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
推荐阅读
- sql - 如果为空,则更新字段值
- c# - LiveCharts ColumnSeries 在运行时更新颜色
- python - Python:为什么转义反斜杠会产生 2 个反斜杠?
- asp.net - 使用 ASP .NET 应用程序将 SSL 证书添加到 docker 容器以连接主机中的 cosmosDB 模拟器
- vue.js - ESLint 期望在方法结束时返回一个值
- go - 从 golang 使用 AMQP 1.0 连接到 IBM MQ 时出现 EOF
- android - 如何使用 livedata 进行房间选择?
- bash - 如何将shell参数放在字符串中的字符串中?
- elasticsearch - 我可以将文本的默认类型定义为对象类型中的关键字吗?
- android - 在 Android 平台上打开本地文件的 Delphi FMX 功能失败