Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
elijahofmurom
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 2
1

Где выделяется память под массив

28.06.2016, 16:05. Просмотров 952. Ответов 6

Здравствуйте!

Данный код является валидным и компилируется в gcc 5.3.1 без ошибок.

По данному коду есть несколько вопросов.
Объясните, пожалуйста,
1. Как выделяется память под массив a, ведь его размер не известен на момент компиляции?
2. Где располагается память, выделенная под массив a (в куче, на стеке или ...)?

C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main(){
    int n; 
    scanf("%d",&n);
    int a[n];
 
    return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2016, 16:05
Ответы с готовыми решениями:

Не выделяется память под массив
void FloodFill_3(HDC hdc, RECT rect, COLORREF color, COLORREF border)...

Как выделяется память под структуры?
Не могу понять как считается память под структуры. Если создать структруру...

При попытке создать динамический одномерный массив, под него выделяется только 8 байт памяти
Доброго времени суток. Проблема в следующем: при попытке создать динамический...

Не выделяется память функцией маллок в функции
Такой код не пашет в функции, но если писать его в главной функции, то все...

Правильно ли выделяется память в приведенном коде
Прошу помощи. Вот мой код, внизу задам вопросы. #include&lt;stdio.h&gt; ...

6
HighPredator
5692 / 2011 / 723
Регистрация: 10.12.2010
Сообщений: 5,778
Записей в блоге: 3
28.06.2016, 16:23 2
Лучший ответ Сообщение было отмечено elijahofmurom как решение

Решение

Disclaimer: поскольку сие есть implementation-defined as per standard, речь пойдет только о гцц.
Цитата Сообщение от elijahofmurom Посмотреть сообщение
1. Как выделяется память под массив a, ведь его размер не известен на момент компиляции?
В рантайме, в момент, когда размер становится полностью вычисляем.
Цитата Сообщение от elijahofmurom Посмотреть сообщение
2. Где располагается память, выделенная под массив a (в куче, на стеке или ...)?
В стеке, при помощи вызова стекового аллокатора alloca()
2
elijahofmurom
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 2
28.06.2016, 16:34  [ТС] 3
Спасибо за ответ...

А у этого метода выделения памяти есть какое-нибудь общепризнаное название?,
ну например -
Динамическое выделение памяти в стеке программы.
0
HighPredator
5692 / 2011 / 723
Регистрация: 10.12.2010
Сообщений: 5,778
Записей в блоге: 3
28.06.2016, 16:38 4
Цитата Сообщение от elijahofmurom Посмотреть сообщение
Динамическое выделение памяти в стеке программы
Все встречавшиеся мне англоязычные формулировки дословно такие. Поэтому, да, можно так называть.
0
SergioO
168 / 184 / 90
Регистрация: 13.12.2015
Сообщений: 995
28.06.2016, 17:05 5
Цитата Сообщение от elijahofmurom Посмотреть сообщение
А у этого метода выделения памяти есть какое-нибудь общепризнаное название?
автоматическая память. в стеке.
динамическая - это другое.
1. например, нельзя изменить размер автоматического массива
2. удаляется автоматически (не надо free())
еще ряд отличий.
1
SergioO
168 / 184 / 90
Регистрация: 13.12.2015
Сообщений: 995
28.06.2016, 18:32 6
elijahofmurom, в таблице описаны основные свойства
1
Миниатюры
Где выделяется память под массив  
SergioO
168 / 184 / 90
Регистрация: 13.12.2015
Сообщений: 995
28.06.2016, 18:33 7
в тему - "можно инициализировать неконстантным значением"
0
28.06.2016, 18:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2016, 18:33

Выделяется память для массива указателей нежелательно освобождается
Как вы видите, здесь выделяется память для массива указателей на &quot;строки&quot;...

Выделить память под двумерный массив
Есть програмка, нужно сделать что-бы массив mass был двумерный размером 7х4....

Выделить память под двумерный массив динамически
Маюсь уже неделю, не могу выделить динамическую память под двумерный...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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