为什么我的程序有内存泄漏检查错误?

时间:2010-12-28 05:02:19

标签: c memory-management memory-leaks valgrind

当我使用这个

valgrind --leak-check=yes ./Main

我有大约185236个错误。它说:

  

xxx中的xx字节可能在xxxx

的丢失记录xxxx中丢失

这是我的代码:

Node InsertString(Head head, Node tree, char* data) {
    if (tree == NULL) {
        tree = malloc(sizeof (struct TreeNode)); //Error

        if (tree == NULL) {
            printf("Out of Space!\n");
        } else {
             tree->theData = malloc(sizeof (char) * strlen(data));//Error
            strcpy(tree->theData, data);
        }
    } else {
            if (strcmp(data, tree->theData) < 0) {
                tree->Left = InsertString(head, tree->Left, data); //Error
            } else {
                if (strcmp(data, tree->theData) > 0) {
                    tree->Right = InsertString(head, tree->Right, data);//Error
                }
            }
        } 

    }
    return tree;
}

谢谢!

2 个答案:

答案 0 :(得分:4)

您是否曾致电free取消分配使用malloc分配的内存?

如果没有,那么,你就是在泄漏所有的记忆。

答案 1 :(得分:-2)

使用名为valgrind的工具。它会告诉你这些内存泄漏。