освобождение памяти - PullRequest
       4

освобождение памяти

1 голос
/ 28 сентября 2010

У меня проблема с освобождением памяти, как указано ниже:

            string points; // some points sequences

    char* charPoints = (char*)malloc((points.length() +1) * sizeof(char));

            //do something

    free(charPoints);

Даже после освобождения памяти происходит утечка при проверке с помощью инструментов

Ответы [ 4 ]

2 голосов
/ 28 сентября 2010

Указатель, который вы передаете free, должен совпадать с указателем malloc. Если вы передадите другой указатель, это приведет к неопределенному поведению. Сделайте копию указателя перед выполнением такой операции, как увеличение charPoints, а затем передайте этот оригинальный указатель в функцию free, чтобы правильно освободить память.

2 голосов
/ 28 сентября 2010

Единственная проблема, которую я вижу, это когда malloc возвращает NULL, потому что не может выделить достаточно непрерывной памяти.Вы уверены, что утечка памяти происходит из-за malloc / free?

0 голосов
/ 28 сентября 2010

После освобождения обновления памяти со значением NULL, показанным ниже

свободный (charPoints); charPoints = "NULL"

0 голосов
/ 28 сентября 2010

Ваши приборы для обнаружения утечек плохие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...