![]() |
|
Модераторы: bsa |
![]()
|
|
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Насколько я знаю такой массив создаться точно также как обычная глобальная переменная, то только ее имя будет локализовано, потому для гигабайта не катит. В опциях проекта можно указать максимальный размер стека (под винду) Опять же если смотреть под винду то скорость создания будет примерно такой же, как и в стеке, потому что винда не дурная чтобы гиг стека без нужды с оперативе держать. Хотя пожалуй archimed7592 прав. Просто тут есть путаница, под динамическим массивом можно понимать массив динамической длинны или выделенный в куче -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Не совсем так. Есть три вида storage duration: automatic, dynamic и static. В общем случае для каждого из видов предусмотрена отдельная "область" памяти. Для автоматических объектов это стек, для динамических - куча, а для статических - точно сказать не могу, но, AFAICS это просто область в сегменте данных, выделяемая в момент старта программы.
Сколько раз указывал - винда разом не выделяла огромный объём под стек -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
В том то и дело если она начнет его наращивать, то быстрее не будет. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 2 Всего: 207 |
Замечу, что я ни разу не упомянул о стеке Добавлено через 2 минуты и 5 секунд очень даже катит причем это будет самый быстрый способ выделения памяти + данные будут располагаться в BSS секции, что не увеличивает размер выходного файла -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Че это за секция такая? Т.е. в экзешнике не резерируется место под статик переменные? Они что создаются на этапе инициализации? -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Alexeis, думаю, только статические константы встроенных типов могут располагаться в сегменте кода.
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 2 Всего: 207 |
неинициализированные глобальные (статические и не статические) и локальные статические данные располагаются в BSS секции я не знаком с форматом файлов PE однако могу сказать про реализацию BSS в формате ELF там есть такое понятие как таблица дескрипторов програмных сегментов каждый програмный сегмент имеет определенный тип особое положение занимают сегменты с типом PT_LOAD, т. е загружаемые програмные сегменты по ним осуществляется отображение образа программы (библиотеки) на адресное пространство процесса каждый дескриптор имеет два очень важных компонента: FileSiz и MemSiz разность значений MemSiz - FileSiz дает размер BSS секции образа программы (библиотеки) т. е, например, если где-то в коде определен неинициализированный массив размером в 1ГБ, то MemSiz = FileSiz + 1024 * 1024 * 1024 при этом значение FileSiz равно общему размеру всех инициализированных данных (явно определенных в коде или неявно создаваемых компилятором / компоновщиком) при динамической компоновке (загрузчиком ядра или пользовательского уровня (ld.so)) отображается FileSiz-часть образа программы (библиотеки) и выделяется MemSiz - FileSiz байт для BSS Это сообщение отредактировал(а) MAKCim - 29.12.2007, 19:06 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Да, вообще говоря, на такие переменные и так не выделяется...
Ну, тебе виднее -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |