c-从结构中分配和释放数组的内存



我有以下结构:

typedef struct
{
    char *name[10];
    char *msg[100];
} Log;

如何从日志结构中释放名称和消息数组?我知道free只用于动态分配,而动态分配在结构中不起作用。我能做什么?

尝试过,但出现错误:

typedef struct
{
    char *name[] = (char *)malloc(sizeof(char) * 10);
    char *msg[] = (char *)malloc(sizeof(char) * 100);
} Log;

谁能帮我?谢谢

声明结构不会为其成员分配内存。创建结构实例时会分配内存。所以

typedef struct
{
    char *name[10];
    char *msg[100];
} Log;  

不为namemsg分配内存,它只是将Log声明为新的数据(用户定义的)类型。但当你创建一个实例时

Log log_flie;

为CCD_ 4和CCD_。现在,您可以(动态)为中的数据成员元素分配内存

for(int i = 0; i < 10; i++)
    log_file.name[i] = malloc(N);  //N is the desired size  

类似地,您可以对msg执行此操作。

要释放动态分配的内存,请调用free作为

for(int i = 0; i < 10; i++)
    free(log_file.name[i]);    

如果您想为namemsg动态分配内存,请执行以下

typedef struct
{
    char **name;
    char **msg;
} Log;  

然后

Log log_file;
log_file.name = malloc(10 * sizeof(char *));
log_file.msg = malloc(100 * sizeof(char *));  

最新更新