> Я почему шучу про "много энергично говорим" - потому что идеи assert'ов
> для размера VLA, тестирования худшего случая отметаются как немыслимыеНе то что немыслимые - а "еще хуже чем динамическая аллокация". Ибо еще менее defined и еще меньше возможностей для корректной реакции.
А что должен кернел сделать по assertion failed? В панику брякнуться? Ну, зашибись реакция, конечно. Юзерям понравится. Retry выделения в этой парадигме вообще не получится (смысл повторять тот же assertion?!), вернуть caller'у ошибку - наверное не assert тоже было. И получается как вон то - только еще хуже, ибо грабель больше и контроля над ручкой нет, грабля автоматически подпрыгивает и лупит в лоб всех кто проходит мимо.
> и тебя куда-то совсем понесло. "Еще хуже чем динамическая аллокация памяти" -
> вот, фрагментация кучи уже лучше, чем VLA.
Внезапные крахи и почти полная невозможность их адекватного парирования спускают си до уровня питоняш и нафиг нам такой си вперся вообще?
> В принципе на этот случай есть union'ы, но с ними придётся следить
> не за стеком, а за тем, чтобы не было обращений к
> неактивным полям и чтобы инициализация активного поля нигде не пропускалась.
Я даже примерно так (изредка и немного) делаю - но при этом желательно сделать некий interlock ресурса, для проверки использования, иначе так окажется что мы тут храбро юзали массив - а вон там сетапнули DMA, забыли про это, все счастливо пахало... пока DMA не добрался до нас и не протер все к хренам другими данными... а мы не понимаем - откуда, блин, это вообще вот так?!