LINUX.ORG.RU

есть ли утечка


0

0

си есть строка char *str = strdup("hello"); мы делаем str[3] = '\0'; т.е. строка превращается в "hel" затем освобождаем память free (str);

вопрос: не будет ли здесь утечки памяти? имеются в виду обрезанные символы "lo"

anonymous

Не будет утечки

Dead ★★★★
()

Завершающий '\0' важен только для функций работы со строками.

Для функций размещения/освобождения памяти её содержимое не имеет никакого значения.

DKorolkov
()

нет не будет здесь утечки. символ \0 только для работы ф-ций из string.h нужен;

alphex_kaanoken ★★★
()

При выделении памяти с помощью malloc внутренний менеджер запоминает адрес и размер выделенной памяти. При освобождении с помощью free он ищет этот адрес и освобождает запомненный при выделении размер. Что именно там реально лежит его не интересует.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.