Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Максимальный размер static-массива 
V
    Опции темы
borisbn
Дата 10.6.2012, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



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

Недавно потребовалось создать статический массив размером 12.884.901.888 байт (8192*64*48*8*8*sizeof(long long))
Компилятор (вернее линковщик) меня отшил с такими претензиями, однако на борту имеется 16 ГБ памяти, ОС - 64-х разрядная OpenSuse 11.3 x86_64. Версию gcc не помню (он там встроенный) то точно выше 4.5.

Вопрос: такой объём памяти вообще можно выделить ? Если да, то как ?
Спасибо.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
kuzulis
Дата 10.6.2012, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



Мож компилятору нужно какие-нить ключики дать, чтобы он не матюкался, а увеличил размер стека скок нужно?

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


pattern`щик
****


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

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



неплохо бы узнать, что сказал линкер,

PM WWW   Вверх
borisbn
Дата 10.6.2012, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Цитата(boostcoder @  10.6.2012,  15:19 Найти цитируемый пост)
неплохо бы узнать, что сказал линкер,

к сожалению, ничего вразумительного:
Цитата
error: ld returned 1 exit status

и фффсё. больше ни одной строчки. ни одного символа...

Цитата(kuzulis @  10.6.2012,  14:57 Найти цитируемый пост)
увеличил размер стека скок нужно?

насколько я знаю, на стеке и в 1000 раз меньше нельзя выделить. В вопросе было 
Цитата(borisbn @  10.6.2012,  11:48 Найти цитируемый пост)
потребовалось создать статический массив




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Randajad
Дата 1.7.2012, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: нет
Всего: 8



А в куче выделить память нельзя?
PM MAIL   Вверх
borisbn
Дата 1.7.2012, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Цитата(Randajad @  1.7.2012,  13:16 Найти цитируемый пост)
А в куче выделить память нельзя? 

В принципе можно, но я бы хотел на этапе компиляции/линковки знать, что память будет выделена. Не хотелось бы узнать о нехватке памяти в рантайме...
Предлагаю объединить темы - эту и соседнюю - http://forum.vingrad.ru/forum/topic-353866...y2501627/0.html
Причём объединить там (в "Правомерно ли такое"), а эту тему забросить

Это сообщение отредактировал(а) borisbn - 1.7.2012, 13:56


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
volatile
Дата 1.7.2012, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(borisbn @  1.7.2012,  13:52 Найти цитируемый пост)
я бы хотел на этапе компиляции/линковки знать, что память будет выделена

Боюсь что это невозможно в обоих случаях.

PM MAIL   Вверх
borisbn
Дата 1.7.2012, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Цитата(volatile @  1.7.2012,  13:56 Найти цитируемый пост)
Боюсь что это невозможно в обоих случаях.

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


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
500mhz
Дата 1.7.2012, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Ну все правильно что линковщик отшил, вы же хотите получить память как неинициализированную (ну типа секция .bss хотя название может быть другим), и эта фигня при загрузке файла будет пытатся выделится в адресном пространстве процеса, выделяйте ручками и будет вам счастье )


--------------------

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


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(borisbn @  10.6.2012,  14:45 Найти цитируемый пост)
насколько я знаю, на стеке и в 1000 раз меньше нельзя выделить. В вопросе было 
потребовалось создать статический массив

интересно, а то что программа распухнет минимум на величину вашего массива Вас не смущает ? :winк

Это сообщение отредактировал(а) mes - 1.7.2012, 19:26


--------------------
PM MAIL WWW   Вверх
500mhz
Дата 1.7.2012, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Цитата

интересно, а то что программа распухнет минимум на величину вашего массива Вас не смущает ? :winк



ниче там не распухнет, массив будет определен как НЕИНИЦИАЛИЗИРОВАНЫЙ и занимать в файле будет 0 байт, а вот при загрузке займет все что было указано.


--------------------

PM MAIL ICQ   Вверх
math64
Дата 2.7.2012, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 72



У меня 32-разрядная ubuntu, gcc 4.4.5, про массив такого объема сразу выдаёт sizeof array too large. Максимум даёт выделить 2GB (что естестственно для 32-разрядной ОС), но компилируется очень долго. Размер откомпилированного файла - 7K. 
PM   Вверх
math64
Дата 2.7.2012, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 72



компилируется на самом деле быстро, долго линкуется. Наверно, создаёт временный файл размером 2GB (в случае borisbn -12GB), а потом обрезает до 7K.
borisbn, у Вас есть столько свободного места?
PM   Вверх
borisbn
Дата 2.7.2012, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Цитата(math64 @  2.7.2012,  11:27 Найти цитируемый пост)
у Вас есть столько свободного места? 

Честно говоря, не знаю (с линуксами не дружу). Вот, что выдаёт df

Цитата
linux-dkgu:/ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdg2              20G  8.8G   10G  47% /
devtmpfs              1.6G  492K  1.6G   1% /dev
tmpfs                 1.6G   16K  1.6G   1% /dev/shm
/dev/sdg3             896G  7.7G  843G   1% /home

Причём, я работаю в каталоге /home/user (т.е. каталог с проектом находится там), но работаю из-под root'а. Если мне доступно только /dev/sdg2, тогда понятно, что тупо не хватает места, если же /dev/sdg3 - то места, как видите, достаточно


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
500mhz
Дата 2.7.2012, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Я понял в чем проблема )))
В заголовке ELF размер секции 4 байтами определяется (при 32битном ельфе) так что туда 12гб по определению не влезут )))



--------------------

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | GNU toolchain | Следующая тема »


 




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


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

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