LINUX.ORG.RU

куча; malloc

 , ,


0

4

Кто нитбудь может ссылок накидать или обьяснить куда смотреть что бы понять как работает malloc. Пусть прога загрузилась в память. Каков начальный размер кучи? Вот например, пусть под кучу стандартно выделено 1 страница(4кб). я делаю malloc(4097); в эту страничку не влезет 1 байт, и получается мне нужна еще одна страничка? и он ее берет через sbrk? и размер кучи уже 8kb?

Если я еще ни разу не выделял память то получается мне сразу доступна вся страничка? и как маллок хранит инфу о том что он уже выделил? и если я память отдаю, free(4097), то страничку которую запросил раньше я отдаю? И еще, как разобраться в строении ядра linux? есть какой то труд где хоть структура описана?

Смотри сорцы glibc или аналогов, обычно в коментах более-менее рассказывают как оно работает. Можно и сам код смотреть, его там не много.

mashina ★★★★★
()
Ответ на: комментарий от maksspaces

Вася, я тебе сказал, что маллок никакого отношения к памяти не имеет. И так же объяснил как он работает и что это. Если ты этого понять не можешь и даже не пытаешься - для чего ты задаёшь эти вопросы?

Ты думаешь, что кто-то тебе будет что-то разжёвывать? Будут, только такие же скудоумы, но с чего ты взял, что у него есть какое-либо представление?

У тебя представления никакого нет, от слова «совсем».

anonymous
()
Ответ на: комментарий от maksspaces

А у меня верное представление???

Ну как сказать.. у тебя же из представлений есть только дёрганье sbrk() что в принципе верно, но весь гемор (суть) реализации кучи в остальных деталях которых у тебя нет или представление о них неверное.

mashina ★★★★★
()

Ладно, я так уж и быть - прокомментирую твой высер. Хотя я уже указал основную ошибку, но в авось тебя ещё можно спасти.

Кто нитбудь может ссылок накидать или обьяснить куда смотреть что бы понять как работает malloc.

Уже тебе сказали. Идёшь и гуглилшь по ключевым словам.

Да и вообще, если ты не можешь решить сам такую примитивную задачу - представление - это не для тебя.

Пусть прога загрузилась в память

Никакого отношения к твоему вопросу это не имеет.

Каков начальный размер кучи?

Никакой кучи не существует. Это абстрактное понятие. Никаких «размеров» в убогом понимании тоже.

Вот например, пусть под кучу стандартно выделено 1 страница(4кб)

Страница никакого отношения к кучи не имеет, ибо куча не конкретное понятие. Точно так же, как и «выделение» нипонятно чего.

Страница - это составная часть конкретного механизма работы памяти, которая может быть, а может и не быть. Которая никак не связана нискакой кучей и нискаким маллоком.

я делаю malloc(4097); в эту страничку не влезет 1 байт, и получается мне нужна еще одна страничка? и он ее берет через sbrk? и размер кучи уже 8kb?

Опять та же брехня.

Если я еще ни разу не выделял память то получается мне сразу доступна вся страничка? и как маллок хранит инфу о том что он уже выделил? и если я память отдаю, free(4097), то страничку которую запросил раньше я отдаю?

И опять несвязная брехня, связанная с тотальной кашей в бошке.

И еще, как разобраться в строении ядра linux? есть какой то труд где хоть структура описана?

Типичная жертва. Каким образом ты смешиваешь абстрактные и конкретные понятия?

Есть интерфейс - есть реализация этого интерфейса - они может быть какой угодно.

Дак вот - маллок и само понятие куча - это абстрактный интерфейс, а маллок как функция - это какая-то конкретная реализация. И эта конкретная реализация реализуется на основе конкретной, работающей подсистемы памяти ядра, вернее её интерфейса.

Подсистема памяти в том же ядре - это такая же реализация другого интерфейса. Реализация этого интерфейса, т.е. подсистема памяти основана уже на хелезячном устройстве памяти, вернее на его интерфейсе.

Каким-то образом ты смешал все эти три мира в одном и чего-то пытаешься добиться. Это тотальное убожество.

Т.е. тот уровень, с которого всё начинается - это железяка, а ключевое слово тебе сказали mmu. Всё гуглится и очень просто.

Остальные не важны, ибо влиять на реальном поведение никак не могут.

anonymous
()

если ты сидишь на уровне приклада, то размер страниц памяти (и даже само по себе их наличие) тебя не колышат. канонично - если в куче места нет то до некоторого предела дёргается sbrk, далее mmap.

Но как там у вас на самом деле - зависит от вас. Какой аллокатор берёте, и не извращаетесь ли со стандартным glic`шным.

ps/ прежде чем задать вопрос про malloc и прочие функции libc нелишне глянуть на локальном компьютере в ман`ы - они рулят, там всё необходимое написано.

MKuznetsov ★★★★★
()
Ответ на: комментарий от mashina

Одна ошибка нуля в терминологии и скудоумы уже не могут понять о чем разговор и начинают выкладывать свои изваяния, оценивать что-то, при этом имея такую же убогую кашеобразную субстанцию в черепушке. Жалко мне вас и себя, что я вынужден жить среди вас.

anonymous
()
Ответ на: комментарий от anonymous

Жалко мне вас и себя, что я вынужден жить среди вас.

Так это можно всегда легко исправить, за одно и единственное полезное дело в своей жизни сделаешь.

mashina ★★★★★
()
Ответ на: комментарий от anonymous

Я тебя уже обоссал во всех соседних темах, но ты пришёл сюда. Но давай обоссу и в этой - в чём заключается «информация», которую он куда-то уместил? Поподробнее.

А самое главное, как она связана с вопросом тс"а?

anonymous
()
Ответ на: комментарий от mashina

Так это можно всегда легко исправить

Уже исправляю, не волнуйся. Очистка мира от некомпетентных балаболов идёт полным ходом. Ты мне лучше ответь, почему эникей-нули оккупировали этот раздел? Для вас же есть толксы и свои разделы?

за одно и единственное полезное дело в своей жизни сделаешь.

Смешно слушать оценки от нонейм мусора, а так да - молодец, сослил.

anonymous
()
Ответ на: комментарий от anonymous

Уже исправляю, не волнуйся. Очистка мира от некомпетентных балаболов идёт полным ходом.

Ну как же мне не волноваться когда полный ход всё ещё не дошёл до тебя.

mashina ★★★★★
()

Ты че-то не с той стороны учишь программирование.

anonymous
()
Ответ на: комментарий от mashina

А кто его до меня доведёт? Адепты что-ли? Ладно - не обижайся, раз ты ещё не настучал на меня - я тебя прощаю. Может реально пацанов нету и ты не виноват. Спутал «немного кода» и «тыщи строк нечитаемой лапши», маллок и память, ты не по своей воле.

А про меня не волнуйся - полный ход дошёл до меня в первую очередь, только в другом качестве.

anonymous
()

Кто нитбудь может ссылок накидать или обьяснить куда смотреть что бы понять как работает malloc.

Д.Кнут «Искусство программирования» Т1, 2.5. Динамическое Выделение Памяти.

AF ★★★
()
Ответ на: комментарий от anonymous

Самовыпились лучше, хуило. Или залогинься хотя бы, чтобы тебя ещё раз забанили, и мы бы отдохнули от тебя день-два.

anonymous
()
Ответ на: комментарий от anonymous

А ты прям супермигаспицыалист? Если человек хочет получить предвтавление о работе аллокатора, это плохо? >вынужден жить среди вас. ЧСВ тебе не занимать.

anonymous
()
Ответ на: комментарий от anonymous

залогинься хотя бы

Дак залогинся. Чтож ты такая ссыкливая?

Нулёвая мразь мне тут кукарекает. Обосралась и жопу разнесло на молекулы?

Типичные признаки мрази: больная жертва пропаганды - раз, прекрывание всеми - два. Обыкновенный нулёвый быдлан. Выборка регистрантов снижается до хохламразей.

Ты мне по-существу что-то кукарекни, а если нечего, то зачем ты пытаешься насрать себе на голову?

anonymous
()
Ответ на: комментарий от anonymous

Куд кудахдахдах. Курлы ко кудах кукареку?

Кудах дах кококо. Кудкуды ко кококо ко кудах?

Кудкареку кокок кудах: кудкуды - куд, кокококо кудах - кудах. Кококо кукареку кудах. Кудрудах куркур коко.

Ко куд-кудах ко-ко кукареку, ко кудкудах, кококо кудах тахтах?

anonymous
()
Ответ на: комментарий от anonymous

А ты прям супермигаспицыалист?

Опять же эти высеры малоразвитых адептов. Ну к чему ты это высрал, что это поменяет? Если я прав - я прав в любом случае, а какие-бы попытки по дискредитации меня ты бы не предпринимал - это ничего не изменит.

Вся проблема в том, что у вас, жертв пропаганды, в бошках тотальное ничего. Вбивали всю убогую жизнь в бошку «он неправ, потому, что он ест детей» - всё, теперь терминальный фимоз.

Если человек хочет получить предвтавление о работе аллокатора

Враньё. Человек хотел получить предствление, а о работе памяти. А то, что аллокатор == память - это представление нулей, т.е. типичная подмена понятия уровня «руль и пидали - это машина».

Давай попроще - тебя справшиваю, «как работает машина» - ты его отправляешь в макулатуру по вождению/управлению. Ну дак управление - это «как работает интерфейс», а не как работает машина.

В черепах с «ничего» рандомного обывателя - баранка и есть «устройство машины», но это не значит, что оно так и есть.

Аллокатор - это интерфейс распределения памяти, и то фентазийный.

работе аллокатора

И да, то, что линковалось - это не аллокаты - это мусор. Высер убого школьника. «Знание» об аллакторе на списках == знание об аллокаторе «ничего».

ЧСВ тебе не занимать.

Естественно. Я хотел жить в лучшем мире, среди человеков, а попал в мир обезьян. Ну да - так бывает. Кому же ещё мир из говна подымать.

anonymous
()
Ответ на: комментарий от anonymous

Ну да, как зашёл разговор об регистрантах - обосрался. Ну ничего - иди пожри говна - полегчает.

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