понимаю Кирилла и могу вопрос поставить четче: почему в рантайме нельзя определить размер сырого массива на стеке в рантайме и выделить нужное количество памяти? Что мешает? Пытался одно время гуглить, но объяснения не нашел. Сорян сразу, если вопрос тупой :)
Да я тоже понимаю...И вопрос интересный. Хотя и тупой с виду. Ну, вот так, у каждого языка есть можели памяти, которые они используют, в С и С++ такая вот модель памяти
Это можно сделать, и это в С есть , называется VLA, но там невозможно определить и обработать ситуацию когда не хватает памяти. В стандарте С записано просто -- ты даёшь нам переменную с размером массива, мы даём тебе массив. Если он не влазит в память (стек) -- ТВОИ ПРОБЛЕМЫ, что будет -- мы не знаем. Если тебя такое устроит -- пользуйся. Членов комитета С++ это не устраивает и я с ними согласен.
Вот тут можно прочитать, раздел Variable-length arrays Это есть только в чистом С, причём последних стандартов. https://en.cppreference.com/w/c/language/array
Константные размеры объектов на стеке дают значителтьые возсожности по оптимизации стек фреймов и прочего
Обсуждают сегодня