函数中结构体的生命周期
课程1-4中,函数void insert_student(linknode_t *head)的结构体s_t声明后,调用linklist.c的尾插法函数,将一条学生数据插入链表。
问:函数void insert_student(linknode_t *head),调用结束时,为什么该函数中的结构体s_t的内存没被释放?
相关代码:
student_manager.c
void insert_student(linknode_t *head)
{
s_t st = {0};
linknode_t *p = NULL;
bool is_id_exist = true;
/*中间无关代码已省略*/
if(is_id_exist == true)
{
insert_tail_linklist(head,st);
printf("插入成功!\n");
}
return ;
}linklist.c
void insert_tail_linklist(linknode_t *head,datatype_t data)
{
//1.为新节点在堆区分配空间,用指针temp保存
linknode_t *temp = NULL;
temp = (linknode_t *)malloc(sizeof(linknode_t));
//2.把data数据放到temp结点的数据域
temp->data = data;
//3.循环遍历找到尾结点
linknode_t *p = head;
while(p->next != NULL)
{
p = p->next;
}
//4.在p后插入temp结点
temp->next = p->next;
p->next = temp;
return ;
}11
收起
正在回答
2回答
第3行s_t st={0}中,st是栈上的变量,调用结束自动覆盖,肯定是释放了的。
物联网/嵌入式工程师
- 参与学习 394 人
- 提交作业 23779 份
- 解答问题 1206 个
行业热门,政策风口,人才缺口极大,现在入场时机正好! 上千人检验,数轮迭代的硬核知识体系,软硬件通吃 保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星