在哪里设置我的free();在我的C程序中?

时间:2017-02-20 20:19:42

标签: c arrays linked-list directory free

我创建了这个程序,它搜索计算机的目录(给定一个地址,即C:\ Windows)。它将文件名存储到以26长数组(每个字母表中的一个字母的插槽)组织的链接列表中。

当我运行该程序时,它打印出文件夹的文件名,与我输入的字母相关。但是,当我第二次执行时,它会再次打印出最后的打印输出以及新的打印输出。

例如:
    输入目录地址:      C:\视窗
    C:\ WINDOWS
    输入要搜索的字母:      SY
    SY
    符号
    系统
    SYSTEM.INI
    SYSTEM32
    输入要搜索的字母:     
    一个
    加载项
    程序兼容性
    AppPatch文件
    AppReadiness
    AsCDProc.log
    符号
    系统
    SYSTEM.INI
    SYSTEM32
    输入要搜索的字母:

我相信我的自由();是在错误的地方。我对C很陌生,所以我还在学习如何正确分配内存。有人会有任何建议来帮助我解决这个问题吗?

这是我的代码:

func *(left: CGAffineTransform, right: CGAffineTransform) -> CGAffineTransform {
    return left.concatenating(right)
}


public extension CGAffineTransform {
    static func scale(_ scale:CGFloat, aboutPoint point:CGPoint) -> CGAffineTransform {
        let Tminus = CGAffineTransform(translationX: -point.x, y: -point.y)
        let S = CGAffineTransform(scaleX: scale, y: scale)
        let Tplus = CGAffineTransform(translationX: point.x, y: point.y)

        return Tminus * S * Tplus
    }
}

view.transform = CGAffineTransform.scale(2.0, aboutPoint:point)

1 个答案:

答案 0 :(得分:0)

在每个节点上打印调用free()并将每个数组项设置为NULL

void print(){
    int i;
    struct node *temp,*printed;

    for(i=0 ; i < 26; i++){
        temp = arrayOfLinkedLists[i];
        while(temp != NULL){
            printf("%s\n",temp->fileName);
            printed = temp;
            temp = temp->next;
            free(printed);
        }
        arrayOfLinkedLists[i] = NULL;
    }
}