Comments 8
Я всегда думал что malloc выделяет память в куче. "Когда мы вызываем malloc
, мы просто надеемся, что для неё будет достаточно пространства в стеке, и почти никогда этого не проверяем"
Вы всю статью прочтите - это бессмысленный набор слов.
Насколько я понимаю, тут не про выделение памяти, а про то, что на сам вызов malloc может места на стеке не хватить (как и на вызов любой другой функции в теории).
Я бы тогда просто использовал C. Преимущества Rust перед C очевидны и довольно значимы чтобы смириться с небольшой сложностью при разработке небольшой экосистемой. С другой стороны преимущества Zig перед C думаю не стоят того чтобы его использовать, с учётом никакой экосистемы.
На самом деле преимущества Zig перед C видны, если писать на C довольно долго и ненавидеть его за то, что он банально устаревает, как язык. Хотя сам C ещё о-го-го какой с точки зрения возможностей. Более 50 лет в строю, это ли не показатель.
Если коротко, Zig упрощает код на C за счёт своих нововведений. Zig именно позиционируют как замену C. Именно поэтому у этого языка очень тесная связь с C. Можно импортировать заголовочные файлы .h из C, вызывать функции C. Даже компилятор Zig компилирует код на C сам. Всё прям сквозит очевидными выводами.
Для меня лично очень не хватает в C вложенных методов в структуры. Меня лично бесит постоянно повторять одни и те же слова для названий функций, когда они выполняют определённую работу над данными в структуре, которую я передаю в эту функцию, как параметр. И я очень рад появлению такого языка, как Zig, так как для меня лично он решает ряд проблем с архаичностью языка C. И при этом я не теряю возможностей самого языка C
Zig пока один из четырёх условно новых языков за которымя я наблюдаю, кроме него это Nim, Odin и V - автору рекомендую посмотреть в их сторону, возможно что-то приглянется.
Пока личного фаворита выбрать не получилось но все четыре невероятно интересные проекты способные лично для меня стать альтернативой C. Как говорится будем наблюдать.
Поэтому мы передаём аллокатор методу
init
, но не передаём его циклу событий.
Что мешает методу init сохранить аллокатор в объекте?
Мысли о Zig и Rust