Если вы используете malloc()
для выделения памяти для 4 целых чисел, не должен ли он возвращать адрес памяти первого целого числа? И если да, то не должно free()
освободить только первое целое из памяти, а остальные останутся?C Свободная память, используя бесплатно
ответ
не должен бесплатно() только освободить первое целое число из памяти, в то время как все остальные остались позади
Нет, это не следует, так как в противном случае вызов free
приведет к памяти большую часть времени течет.
Чтобы ответить на вопрос, который, я думаю, вы могли бы задать, free
должен де-выделить весь блок памяти, на который указывает его аргумент. То, как это происходит, зависит от реализации, но для достижения этой цели нужно вести бухгалтерский учет за кулисами.
malloc()
отслеживает ассигнования, в том числе их размера, и free()
должны быть даны точно адрес, возвращаемый malloc()
, который вызывает, что все распределение будет освобождены сразу.
Относительно примечания, если вы рассматриваете альтернативу,' malloc() 'должен отслеживать каждый индивидуальный байт, так как 'malloc()' не знает тип данных, которые вы намерены вставить там (например, 'malloc (8)' может быть восемь байтов, два 32-битных целых числа или одно 64-разрядное целое число). – Arkku
- 1. C указатели, свободная память
- 2. Одиночная ценность Общая память/свободная память Свободная память/общая память
- 3. C - Свободная память после strdup()
- 4. Общая свободная память java
- 5. C++: память не освобождается бесплатно()
- 6. Свободная память снова [Unix]
- 7. Cydia SBSettings «Свободная память»?
- 8. Свободная память вне функции
- 9. Свободная память явно
- 10. Свободная память от вызова SafeArrayGetElem?
- 11. Свободная память байта []
- 12. Свободная память фрагмента
- 13. strlen и свободная память
- 14. свободная память malloc MPI
- 15. Свободная память, выделенная LLVM
- 16. Свободная память в Linux?
- 17. Свободная память после remove_if
- 18. Свободная память в функции
- 19. Linux: свободная память
- 20. Свободная память во время цикла
- 21. Когда будет свободная память памяти C
- 22. C свободная память из массива struct
- 23. Свободная память из связанного списка в C
- 24. C: свободная память, выделенная в с
- 25. Свободная память в C с непрерывными объявлениями
- 26. C++ Арена Allocator Свободная память всегда половина
- 27. станд :: Список стирании (свободная память)
- 28. Свободная память после использования g_malloc0
- 29. бесплатно() на память стека
- 30. бесплатно выделенная память при interoping C++
Вы спрашиваете, должен ли C-код явно создавать утечки памяти? – juanchopanza
Я просто хочу знать, как это работает –
Нет, вы должны 'free()' весь блок, на самом деле, если вы передадите указатель, который не был возвращен одной из функций '' malloc() ', это неопределенное поведение. –