История изменений
Исправление
cumvillain,
(текущая версия)
:
Кстати, это вроде UB. Т.е. может произойти что угодно.
Ага. Обращение к невалидной памяти это UB. Отлаживать-то как будешь, если тебя так рантайм пугает?
Ошибиться с VLA очень легко.
Не сложнее чем с обычным массивом. И не легче. Буквально так же.
Ошибиться с кастом указателя намного сложнее.
Ахаахахаха. Нет.
Ты хочешь, чтобы функция получала struct Some *, поэтому пишешь void * и в первой же строчке обратно к struct Some * приводишь.
А ещё ты проверяешь границы буфера и не выходишь за него. И use-after-free не делаешь. И много чего ещё. Все эти ошибки прекрасно дебажатся с gdb, VLA тут вообще ничего не добавляет.
Исходная версия
cumvillain,
:
Кстати, это вроде UB. Т.е. может произойти что угодно.
Ага. Обращение к невалидной памяти это UB. Отлаживать-то как будешь, если тебя так рантайм пугает?
Ошибиться с VLA очень легко.
Не сложнее чем с обычным массивом. И не легче. Буквально так же.
Ошибиться с кастом указателя намного сложнее.
Ахаахахаха. Нет.
Ты хочешь, чтобы функция получала struct Some *, поэтому пишешь void * и в первой же строчке обратно к struct Some * приводишь.
А ещё ты проверяешь границы буфера и не выходишь за него. И use-after-free не делаешь. И много чего ещё.