c - Free() 语句崩溃?帮助这个函数解决:(

标签 c list function memory free

我在使用此功能时遇到问题:

 struct list{
        int x;
        int y;
        struct list *next_ptr;
    };


  boolean funzione_esame(struct list **ptrptr, int *number){
        if(*ptrptr != NULL){
        struct list *tmp;
        struct list *pos;
        pos=(*ptrptr)->next_ptr;
        *number=1;
        while(pos != NULL){
            if(pos->x <= (*ptrptr)->y){
                pos->x=(*ptrptr)->y;
                if(pos->x >= pos->y){
                    tmp=pos;
                    pos=pos->next_ptr;
                    free(tmp);
                    continue;
                }
            }
            pos=pos->next_ptr;
            ptrptr=&((*ptrptr)->next_ptr);
            (*number)++;
            }
        return TRUE;
        } else return FALSE;
    }

我不会浪费时间向你解释它应该做什么等等。但我只是不明白为什么它会在 free(tmp); 行崩溃。
我认为我做得很好,没有任何类型的错误。也许这是一个内存问题,解决方案很简单,但我真的找不到它^^
如果您需要更多信息或者我不是很清楚,请告诉我。对我的“通心粉英语”感到抱歉:P。 提前感谢各位!

最佳答案

如果你在未分配的内存地址上调用 free ,那么它就会崩溃。使用这个:

if(tmp != NULL) free(tmp);

关于c - Free() 语句崩溃?帮助这个函数解决:(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27962836/

相关文章:

performance - 在 Haskell 中使用列表生成器生成内存高效的代码

scala - 如何将任何函数作为 Scala 包装器方法的输入?

php - 在 foreach 里面返回简码

c - 结构赋值中的不兼容类型

c - 如何在用 C 编写的 CGI 应用程序中使用系统命令执行批处理脚本,通过 Web 浏览器(Apache 服务器)执行

c - 如何使除数结果不四舍五入?

python - 列表理解按列组合子列表的元素

python - 我需要创建一个字典来计算名称在列表中出现的次数

javascript - SVG - getElementsByClassName

c - 将 C 程序安装到另一台机器上,无需共享代码