Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
#1

Динамические массивы на стеке - C++

05.09.2013, 21:36. Просмотров 1052. Ответов 5
Метки нет (Все метки)

Почему не придумали ещё язык программирования, который в точности повторял бы С++, но содержал дополнительно всего одну функцию "выделение массива переменного размера". Причём выделение его на стеке, а не в куче!
C++
1
2
3
int size;
std::cin>>size;
int mas[size];
При этом все заботы по выделению/освобождению памяти компилятор брал бы на себя также, как он делает с локальными переменными!
То есть брал бы и уменьшал stack pointer на заданное число байт!
Он же по сути так и делает при вызове функции с локальными переменными. Но в нашем случае, он бы мог делать это не только в начале функции, при инициализации локальных(auto) переменных, а в произвольный момент в функции по требованию программиста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2013, 21:36     Динамические массивы на стеке
Посмотрите здесь:

динамические массивы ? - C++
как заполнить массив2 к примеру отрицательными элементами с массива1

Динамические массивы - C++
Суть задания такова. Создается динамический массив А, заполняется элементами. Затем создается массив B, куда записываются все элементы...

Динамические массивы - C++
Попытался поработать с дин. массивами, почему то ошибка появляется,может подскажете в чем проблема #include "iostream" using...

Динамические массивы. - C++
Дан одномерный массив, состоящий из 30 целых чисел. Создать другой массив, содержащий элементы исходного массива, кратные 5. Помогите...

Динамические массивы - C++
помогите решить плз Составить программу, которая удаляет из списка L за каждым вхождением элемента Е один элемент, если таковой имеется и...

динамические массивы - C++
нужно решить задачу с использование динамического массива%-) помогите пожалуйста, вот условие: Вывести элементы главной диагонали...

Динамические массивы - C++
С использованием динамических массивов, вводя размер массива с клавиатуры. Используя имя массива как указатель, и применяя адресную...

Динамические массивы - C++
3. Постановка задачи 1. Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать. 2. Выполнить...

Динамические массивы - C++
Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать. Удалить первый четный элемент и вывести...

Динамические массивы - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать. Добавить строку с заданным номером и...

Динамические массивы - C++
1. Добавить после каждого четного элемента элемент со значением 0 2. Добавить столбец в конец матрицы :-[пожалуйста

Динамические массивы - C++
помогите выполнить задание #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> void main() { int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
05.09.2013, 21:51     Динамические массивы на стеке #2
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Почему не придумали ещё язык программирования, который в точности повторял бы С++, но содержал дополнительно всего одну функцию "выделение массива переменного размера". Причём выделение его на стеке, а не в куче!
Это есть в С99 и в gnu экстеншенах (может еще где-то, не знаю). Т.е. используя компилятор gnu ты можешь свободно это применять. Фича называется VLA (variable length array).

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
C++
1
2
3
int size;
std::cin>>size;
int mas[size];
При этом все заботы по выделению/освобождению памяти компилятор брал бы на себя также, как он делает с локальными переменными!
вообще-то это крайне не безопасная вещь (потому и не прижилась), стек по объему гораздо меньше, чем heap (по дефолту), поэтому его легко поломать.

Добавлено через 2 минуты
с вражеской вики
Programming languages that support VLAs include Ada, Algol 68 (for non-flexible rows), APL, C99 (and subsequently in C11 relegated to a conditional feature which implementations aren't required to support;[1] on some platforms, could be implemented previously with alloca() or similar functions) and C# (as unsafe-mode stack-allocated arrays), COBOL, Fortran 90, J.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
05.09.2013, 22:40     Динамические массивы на стеке #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Почему не придумали ещё язык программирования, который в точности повторял бы С++, но содержал дополнительно всего одну функцию "выделение массива переменного размера". Причём выделение его на стеке, а не в куче!
Этот язык есть. Называется C++. google://alloca() Кроме того, сюда подходит любой язык, чей компилятор проводит escape analysis (жавошарпы в первую очередь) и может на стеке выделять вообще всё, а не только массивы.
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
05.09.2013, 22:50     Динамические массивы на стеке #4
При этом все заботы по выделению/освобождению памяти компилятор брал бы на себя также, как он делает с локальными переменными!
Стек ведь не резиновый.

Добавлено через 4 минуты
не только в начале функции
а в произвольный момент в функции по требованию программиста!
Выделение идёт в начале блока, а не функции.
zer0mail
2323 / 1949 / 192
Регистрация: 03.07.2012
Сообщений: 6,996
Записей в блоге: 1
06.09.2013, 09:38     Динамические массивы на стеке #5
Смотрел на VS2010 ассемблерный код - никакого выделения в начале блока не обнаружил.
Может, не по глазам...
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
06.09.2013, 11:27     Динамические массивы на стеке #6
А VS2010 VLA и не поддерживает. Это исключительно гнутое расширение, пришедшее из C99.
Yandex
Объявления
06.09.2013, 11:27     Динамические массивы на стеке
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru