LINUX.ORG.RU

История изменений

Исправление 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 не делаешь. И много чего ещё.