Как malloc() и free() управляют памятью
Попалась мне неплохая статья на Хабр, объясняющая принцип выделения/освобождения памяти malloc()/free() с некоторыми поправками для Linux: - free() не гарантирует, что блок будет освобождён пока выполняется процесс или , как уже ранее отмечалось для класса пула процессов в Python; - небольшие куски памяти, которые меньше 4kb, лучше выделять с помощью alloca(), который шустрее чем malloc(); - так же не забывать проверять сколько реально выделил памяти malloc(), чтобы избежать Bang) ⤵️ Картинка взята с www.turnoff.us
· 09.03.2025
Не хватает примера с кодом
ответить
коммент удалён
· 09.03.2025
Согласен, давайте попробуем написать вместе С чего начнем?
ответить
ответ удалён
· 09.03.2025
Я знаю, что си приближен к компьютеру, но лучше иметь на руках пример чем без примера. Вопрос: почему метод malloc() опасен
ответить
ответ удалён
· 09.03.2025
Пингвин хочет выделить 400 mb
ответить
ответ удалён
· 09.03.2025
Malloc() опасен , если верить документации glibc, т.к. поверяет выделяемую память на превышение максимального размера памяти. Поэтому в glibc вероятно вернёт ( (void)0) , но не факт, что это не закончится BANG'ом. Поэтому после выделения памяти следуе проверять не только на ( (void)0), но и на фактический размер.
ответить
ответ удалён
· 16.09.2025
int a = 46;malloc(a, size(int10241024400);
ответить
ответ удалён