Почему в моей программе есть ошибки с проверкой утечки памяти? - PullRequest
1 голос
/ 28 декабря 2010

Когда я использую это

valgrind --leak-check=yes ./Main

У меня около 185236 ошибок. Он сказал, что:

xx байтов в x блоках возможно потеряно в записи потерь 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 ]

4 голосов
/ 28 декабря 2010

Вы когда-нибудь звоните free, чтобы освободить память, которую вы выделяете с malloc?

Если нет, то вы теряете всю эту память.

0 голосов
/ 28 декабря 2010

Используйте инструмент под названием valgrind.Он расскажет вам о таких утечках памяти.

...