Nav*_*eva 2 c free struct pointers
给出以下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);
Run Code Online (Sandbox Code Playgroud)
但是,程序在free()函数中"卡住" (在发布配置中,程序崩溃).我也试图free(&a)释放拿着指针的衣服,但似乎没有任何作品.
我究竟做错了什么?
apple a = malloc(sizeof(apple));
Run Code Online (Sandbox Code Playgroud)
将指针的大小分配给内存而不是实际结构.
避免将结构设置为指针;
typedef struct
{
list_element header;
int value;
} apple;
apple *a = malloc(sizeof(apple ));
Run Code Online (Sandbox Code Playgroud)
或者最好的方式是指将type其pointer持有像下面.
typedef struct
{
list_element header;
int value;
} *apple;
apple a = malloc(sizeof(*a));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |