компе проблем нет, это просто системный вызов
А на мк это как происходит?
просто вызов функции
Нет, откуда он память берет?
ну где-то заранее код подумал что участок условно от 0x8000 до 0xffff будет распределяемым, и при вызове он как и обычный malloc будет отрезать кусочки от него
посмотрите как это сделано например в freertos, там насколько помню был malloc
malloc реализован в libc, тебе нужно только написать собственную реализацию функции sbrk
Ты пишешь сам функцию выделения кучи
Оно не думает само, это всё управляемо
malloc это сишный аллокатор. По факту он не аллоцирует память сам. Аллоцирует ОС через системный апи. В случае без ос на МК просто резервируется статический буфер
На мк ты пишешь реализацию sbrk сам, и можешь сам настроит буфер, как тебе удобно (скорее всего это таки будет статическая область в памяти, но не обязательно)
Ну да, я это и сказал по сути
Обсуждают сегодня