当前位置:编程学习 > C/C++ >>

C中结构内存申请如何释放

作为链表结构 typedef struct tag { char *No; char *Name; char *phoneNum; struct tag *next; }studentInfo; 用的时候申请 studentInfo *newStu = (studentInfo *)malloc(sizeof(studentInfo)); newStu->No = (char*)malloc(sizeof(NUM_LENGTH)); newStu->Name = (char *)malloc(sizeof(NUM_LENGTH)); newStu->phoneNum = (char *)malloc(sizeof(NUM_LENGTH)); 那我释放的时候,尝试用这样释放不行 free(pCurrent->No); free(pCurrent->Name); free(pCurrent->phoneNum); free(pCurrent); 具体该怎么做?谢谢
补充:整个删除函数
void DeleteStu(char *No)
{
        studentInfo *pCurrent,*pre,*pTemp;
	pre = Head;
	pCurrent = Head->next;
	while(pCurrent != NULL)
	{
		if(0 == strcmp(pCurrent->No,No))
		{
                        pTemp = pCurrent;
			pre->next = pCurrent->next;
			printf("DELETE %s,%s,%s.\n",No,pCurrent->Name,pCurrent->phoneNum);
			free(pTemp->No);
                        free(pTemp->Name);
                        free(pTemp->phoneNum);
			free(pTemp);
			return;
		}
		pre = pCurrent;
		pCurrent = pCurrent->next;
	}
	printf("NOT EXIST.\n");
}
调试看就是只有No能释放掉,其他两个不行,但这两个指针都有值啊,这我搞不懂了啊
追问:这个是在删除中找到的节点,pCurrent也就是要删除的结点,我发现第一句没问题,到free(pCurrent->Name);就过不去了确定是有值的,Name和phoneNum都有值,我开始以为释放顺序有问题,但现在不知为什么到第二句就停那了,无法往下执行在补充问题中,请看一下这个pCurrent是另一个函数中的,应该没问题是的。。是两个函数中的变量
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,