Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при создании двумерного массива 
:(
    Опции темы
Alexeis
Дата 29.12.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Цитата(MAKCim @  29.12.2007,  12:37 Найти цитируемый пост)
как вариант можно использовать
Код

void function() {
    static char array[N][N]
...
}




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

Цитата(MAKCim @  29.12.2007,  12:37 Найти цитируемый пост)
другое дело, что таких больших стеков не бывает

  В опциях проекта можно указать максимальный размер стека (под винду)

Цитата(archimed7592 @  29.12.2007,  13:03 Найти цитируемый пост)
Замечу, что я ни разу не упомянул о скорости smile.

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

Хотя пожалуй archimed7592 прав. Просто тут есть путаница, под динамическим массивом можно понимать массив динамической длинны или выделенный в куче smile это немного разное.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
archimed7592
Дата 29.12.2007, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(Alexeis @  29.12.2007,  13:57 Найти цитируемый пост)
Насколько я знаю такой массив создаться точно также как обычная глобальная переменная, то только ее имя будет локализовано, потому для гигабайта не катит.

Не совсем так. Есть три вида storage duration: automatic, dynamic и static. В общем случае для каждого из видов предусмотрена отдельная "область" памяти. Для автоматических объектов это стек, для динамических - куча, а для статических - точно сказать не могу, но, AFAICS это просто область в сегменте данных, выделяемая в момент старта программы.

Цитата(Alexeis @  29.12.2007,  13:57 Найти цитируемый пост)
В опциях проекта можно указать максимальный размер стека (под винду)

Сколько раз указывал - винда разом не выделяла огромный объём под стек smile.


--------------------
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
PM Jabber   Вверх
Alexeis
Дата 29.12.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Цитата(archimed7592 @  29.12.2007,  14:10 Найти цитируемый пост)
Сколько раз указывал - винда разом не выделяла огромный объём под стек smile. 

  В том то и дело если она начнет его наращивать, то быстрее не будет.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MAKCim
Дата 29.12.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 2
Всего: 207



Цитата(archimed7592 @  29.12.2007,  13:03 Найти цитируемый пост)
Это не совсем стек ;). 

Замечу, что я ни разу не упомянул о стеке  smile

Добавлено через 2 минуты и 5 секунд
Цитата(Alexeis @  29.12.2007,  13:57 Найти цитируемый пост)
потому для гигабайта не катит.

очень даже катит
причем это будет самый быстрый способ выделения памяти
+ данные будут располагаться в BSS секции, что не увеличивает размер выходного файла


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Alexeis
Дата 29.12.2007, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Цитата(MAKCim @  29.12.2007,  18:41 Найти цитируемый пост)
+ данные будут располагаться в BSS секции, что не увеличивает размер выходного файла

  Че это за секция такая? Т.е. в экзешнике не резерируется место под статик переменные? Они что создаются на этапе инициализации?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bsa
Дата 29.12.2007, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Alexeis, думаю, только статические константы встроенных типов могут располагаться в сегменте кода.
PM   Вверх
MAKCim
Дата 29.12.2007, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 2
Всего: 207



Цитата(Alexeis @  29.12.2007,  18:46 Найти цитируемый пост)
Че это за секция такая? Т.е. в экзешнике не резерируется место под статик переменные? Они что создаются на этапе инициализации?

неинициализированные глобальные (статические и не статические) и локальные статические данные располагаются в 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


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 29.12.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(Alexeis @  29.12.2007,  18:46 Найти цитируемый пост)
Т.е. в экзешнике не резерируется место под статик переменные?

Да, вообще говоря, на такие переменные и так не выделяется...

Цитата(MAKCim @  29.12.2007,  18:41 Найти цитируемый пост)
Замечу, что я ни разу не упомянул о стеке  smile

 smile 


Цитата(MAKCim @  29.12.2007,  18:41 Найти цитируемый пост)
очень даже катит
причем это будет самый быстрый способ выделения памяти

Ну, тебе виднее smile.


--------------------
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
PM Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.