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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.