Вопрос: Как освободить динамически распределить память без использования функции «free ()».
Решение: Стандартная библиотечная функция realloc () может использоваться для освобождения ранее выделенной памяти. Ниже приведено объявление функции realloc () из stdlib.h
|
Если «size» равен нулю, то вызов realloc эквивалентен «free (ptr)». И если «ptr» равно NULL, а размер не равен нулю, то вызов realloc эквивалентен «malloc (size)».
Давайте проверим на простом примере.
|
Проверьте суммарную утечку с помощью инструмента Valgrind. Он показывает утечку памяти в 10 байт, которая выделяется красным цветом.
[narendra@ubuntu]$ valgrind –leak-check=full ./free ==1238== LEAK SUMMARY: ==1238== definitely lost: 10 bytes in 1 blocks. ==1238== possibly lost: 0 bytes in 0 blocks. ==1238== still reachable: 0 bytes in 0 blocks. ==1238== suppressed: 0 bytes in 0 blocks. [narendra@ubuntu]$
Давайте изменим приведенный выше код.
|
Проверьте вывод вальгринда. Он показывает, что утечки памяти невозможны, выделен красным цветом.
[narendra@ubuntu]$ valgrind –leak-check=full ./a.out ==1435== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 11 from 1) ==1435== malloc/free: in use at exit: 0 bytes in 0 blocks. ==1435== malloc/free: 1 allocs, 1 frees, 10 bytes allocated. ==1435== For counts of detected errors, rerun with: -v ==1435== All heap blocks were freed — no leaks are possible. [narendra@ubuntu]$
Эта статья составлена Narendra Kangralkar и рецензирована командой GeeksforGeeks. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Как free () знает размер памяти, которая должна быть освобождена?
- Динамическое выделение памяти в C с использованием malloc (), calloc (), free () и realloc ()
- удалить и освободить () в C ++
- IPC через разделяемую память
- Утечка памяти в C ++ и как ее избежать?
- Структура памяти C-программ
- Что такое утечка памяти? Как мы можем избежать?
- C | Динамическое Распределение Памяти | Вопрос 8
- C | Динамическое Распределение Памяти | Вопрос 3
- C | Динамическое Распределение Памяти | вопрос 2
- C | Динамическое Распределение Памяти | Вопрос 5
- C | Динамическое Распределение Памяти | Вопрос 8
- C | Динамическое Распределение Памяти | Вопрос 7
- C | Динамическое Распределение Памяти | Вопрос 6
- C | Динамическое Распределение Памяти | Вопрос 1
0.00 (0%) 0 votes