Darth Vader 0 6 марта, 2020 Опубликовано 6 марта, 2020 (изменено) · Жалоба Позволяют ли такое стандарты С/С++ и какие именно? int func( int size ) { int array[size] // ... return 0; } Изменено 6 марта, 2020 пользователем Darth Vader Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба https://en.m.wikipedia.org/wiki/Variable-length_array Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба К вопросу: в IAR эта фитча поддерживается компилятором С (с включенной опцией "Allow VLA") и не поддерживается С++... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба 3 hours ago, Darth Vader said: Позволяют ли такое стандарты С/С++ и какие именно? int func( int size ) { int array[size] // ... return 0; } Если размещать так массив в куче, то это делается иначе, поддерживается любым стандартом плюсов. А если это нужно в стеке, то подобной решение крайне небезопасно само по себе В реальной системе лучше создавать в стеке массив максимально допустимого фиксированного размера, на производительности это все равно не скажется, но сделает систему прогнозируемой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба 54 minutes ago, Forger said: ...подобной решение крайне небезопасно само по себе... Безусловно, но в мультитреде (при ограниченном стеке) и когда по каким-то причинам malloc нежелателен - может пригодиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба Just now, Axel said: мультитреде а это еще опаснее, особенно если ось не предусматривает контроля стеков задач. Размещать массив в стеке это вообще моветон, создайте массив статически и все проблема уйдет, не возникнув. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба С 99% вероятностью можно предположить, что потребность - надуманная. Если конечно речь не идёт о программировании под ОС типа win или линух. 8 минут назад, Axel сказал: Безусловно, но в мультитреде (при ограниченном стеке) И как это поможет "при ограниченном стеке"? Поясните. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба 23 минуты назад, Forger сказал: а это еще опаснее, особенно если ось не предусматривает контроля стеков задач. Скорее даже не просто контроля, а - динамического управления размером (подкачки). Как в винде. Если ОС такое поддерживает - массивы динамического размера полезны. Ну ещё они могут быть полезны в каких-то случаях рекурсий или когда алгоритм сам отслеживает размер доступного стека и увеличивает свою эффективность, проходя по условным веткам, требующим больше стека, если он доступен. Но это - очень редкие случаи как правило. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба 2 minutes ago, jcxz said: динамического управления размером (подкачки). Как в винде. А разве существуют подобные готовые решения для рядовых ртос под МК? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба 4 минуты назад, Forger сказал: А разве существуют подобные готовые решения для рядовых ртос под МК? Я не знаю. Поэтому и написал только про win. И наверное в линухе такое есть? Должно быть. Чтобы такое сделать нужно наличие MMU. Если есть MMU - можно сделать самостоятельно и без поддержки ОС. А без MMU и ОС ничего не сможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба 2 minutes ago, jcxz said: линухе Не стоит здесь произносить это запрещенное слово )) А то тему потрут в итоге Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба Только что, Forger сказал: Не стоит здесь произносить это запрещенное слово )) Я произношу без какой-либо отрицательной интерпретации. Как ОС, использующую виртуальную память И позволяющую пользователю запускать задачи в произвольной комбинации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба 48 minutes ago, jcxz said: И как это поможет "при ограниченном стеке"? Поясните. Когда надо иногда два "больших" массива, иногда три "маленьких" . Мне от алгоритмистов такие заморочки иногда прилетали... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба 2 minutes ago, Axel said: Мне от алгоритмистов такие заморочки иногда прилетали... Вашим "алгоритмистам" не помешают доп. курсы по особенностям кодирования на железках без винды или линуха Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 6 марта, 2020 Опубликовано 6 марта, 2020 · Жалоба 12 minutes ago, Forger said: Вашим "алгоритмистам" не помешают доп. курсы по особенностям кодирования на железках без винды или линуха Никоим образом! Хныкать по поводу недостатка ресурсов - удел программистов. Абстракция от технических проблем - важное условие нахождения правильных решений (сугубо ИМХО). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться