создавать массивы в стеке? В плюсах их array<int, n> вообще изза темплейтов требует число, в других языках тоже насколько я понял тоже в стеке не могут сделать массив длины основанной на входных данных. ПОчему? в чём проблема? в любом случае же код будет просто как
push rbp
code code
pop rbp
И какого бы мы говна не наворотили в функции всё нормально срежется обратно.
Почему, шарпы могут например (но завезли это ооочень недавно). а вообще это связано с конкретными оптимизациями
си99 это стандарт, реализация может быть любой
можно пример таких оптимизаций пж?
Согласно которому такие массивы допускаются. прочитай вот это с массивы переменной длины https://ru.m.wikipedia.org/wiki/C99
Про массивы увидел, про стек не увидел
компиляторы не разрабатываю, с ходу не напишу. Но в целом могу ответить почему так - из-за наличия GC гораздо проще работать с managed heap. Но опять же, ничего не мешает при желании в том же шарпе написать stackalloc или в С++ (вроде с 17) alloca и размещать данные на стеке, но тогда ты сам себе буратино и можешь выстрелить в ногу
Надоел эту кринжовую гифку отправлять.
да эт баян, вольная интерпретация сюжета из чатрулетки
А как же зиг, раст и другие языки без GB? Ну и stackalloc не то что не используется, в с++ нет структуры данных которая предпологает неизменяемую длину и указание этой длины после этапа компиляции
ты за VLA?
Нет, он против
Любой С может это, даже K&R
Переменной длины массив не может быть, да. Проблема в том, что такая программа будет нестабильной, даже с C99
да
Он про VLA. Оно с c99. А с c11 опционально
https://lemon.rip/w/c99-vla-tricks/ Думаю, возможно видели уже (статья баянистая). Забавное наблюдение автора насчёт VLA (=
Обсуждают сегодня