这是一段创建线性表的代码一部分,在运行时崩溃了.以之前认知来说调用malloc以后要调用free释放分配的堆的内存空间,可是为什么崩溃那?
#define MAXCOUNT 5
typedef struct Ste_List {
float data[MAXCOUNT];
int last;
}Ste_List;
typedef struct Ste_List List;
typedef struct Ste_List *List_point;
List initLineList() {
List_point ste_list;
ste_list = malloc(sizeof(List));
ste_list->last = -1;
return *ste_list;
}
int main(void) {
List _list = initLineList();
free(&(_list));
}
首先看下_list 初始化的一些信息
从图中可以看到这个结构体是分配在栈中的;地址为0x7ffee9533e20
再看下在initLineList()中malloc真正分配的内存地址