【发布时间】:2021-03-20 11:19:11
【问题描述】:
所以我有一个内部有两个指针标签的结构:next,它指向一串其他结构(都通过指针链接它们的下一个字段),另一个指向链中的最后一个结构。我正在尝试释放它们,但不知何故,由于无效的免费,我不断得到核心转储。我是一个新的 C 编码器。有什么我在做的事情显然是错误的吗?
void free_if(myTik *the){
while(the->endif != NULL){
myTik *eh;
eh = the->next;
the->next = the->next->next;
free(eh);
}
}
【问题讨论】:
-
如果
the->next为NULL,那么the->next = the->next->next;有问题。 -
发布的代码太少。
myTik是如何定义的?链表是如何构造的?另外还不清楚这个函数应该做什么......它被称为free_**if**,这表明有条件的免费但没有if语句。 -
不使用调试器。不遵循/详细说明您的测试/调试策略和结果,(它是否适用于空列表?它适用于一个列表吗?两个?三个?
-
作为新用户,您应该阅读How to Ask。具体来说,您的代码不是minimal reproducible example,因此其他人无法重现。重现问题通常是解决问题的必要步骤。
标签: c pointers runtime-error malloc free