gpt4 book ai didi

c - 释放指向结构的指针导致程序获得 "stuck"

转载 作者:行者123 更新时间:2023-12-02 08:05:23 30 4
gpt4 key购买 nike

给定以下 C 代码:

struct list_element
{
struct list_element * next;
};
typedef struct list_element list_element;

typedef struct
{
list_element header;
int value;

} *apple;

apple a = malloc(sizeof(apple));
a->value = 1;
free(a);

但是,程序“卡在”free() 函数中(在发布配置中,程序崩溃)。我还尝试了 free(&a) 来释放持有指针的裙子,但似乎没有任何效果。

我做错了什么?

最佳答案

apple a = malloc(sizeof(apple));

将分配指针大小而非实际结构的内存。

Avoid typdefing structure to pointer;

typedef struct
{
list_element header;
int value;

} apple;
apple *a = malloc(sizeof(apple ));

或者最好的方法是引用 pointer 持有的 type,如下所示。

typedef struct
{
list_element header;
int value;

} *apple;
apple a = malloc(sizeof(*a));

关于c - 释放指向结构的指针导致程序获得 "stuck",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52004744/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com