|
|
|
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 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. Вопрос: такой объём памяти вообще можно выделить ? Если да, то как ? Спасибо. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
kuzulis |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 154 Регистрация: 5.9.2007 Репутация: нет Всего: 1 |
Мож компилятору нужно какие-нить ключики дать, чтобы он не матюкался, а увеличил размер стека скок нужно?
|
|||
|
||||
boostcoder |
|
|||
pattern`щик Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 2 Всего: 110 |
неплохо бы узнать, что сказал линкер,
|
|||
|
||||
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
к сожалению, ничего вразумительного:
и фффсё. больше ни одной строчки. ни одного символа... насколько я знаю, на стеке и в 1000 раз меньше нельзя выделить. В вопросе было -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Randajad |
|
|||
Опытный Профиль Группа: Участник Сообщений: 295 Регистрация: 15.3.2012 Репутация: нет Всего: 8 |
А в куче выделить память нельзя?
|
|||
|
||||
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
В принципе можно, но я бы хотел на этапе компиляции/линковки знать, что память будет выделена. Не хотелось бы узнать о нехватке памяти в рантайме... Предлагаю объединить темы - эту и соседнюю - http://forum.vingrad.ru/forum/topic-353866...y2501627/0.html Причём объединить там (в "Правомерно ли такое"), а эту тему забросить Это сообщение отредактировал(а) borisbn - 1.7.2012, 13:56 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
||||
|
||||
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
Я, пожалуй, неправильно высказался... Я НЕ хочу в своей программе проверять, выделилась ли память после new. Я хочу, чтобы стандартный загрузчик без моего участия либо выделил память и дал бы моей программе работать, либо сам бы ругнулся на недостаток памяти -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
500mhz |
|
|||
шайтан Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
Ну все правильно что линковщик отшил, вы же хотите получить память как неинициализированную (ну типа секция .bss хотя название может быть другим), и эта фигня при загрузке файла будет пытатся выделится в адресном пространстве процеса, выделяйте ручками и будет вам счастье )
-------------------- |
|||
|
||||
mes |
|
|||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
интересно, а то что программа распухнет минимум на величину вашего массива Вас не смущает ? :winк Это сообщение отредактировал(а) mes - 1.7.2012, 19:26 |
|||
|
||||
500mhz |
|
|||
шайтан Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
ниче там не распухнет, массив будет определен как НЕИНИЦИАЛИЗИРОВАНЫЙ и занимать в файле будет 0 байт, а вот при загрузке займет все что было указано. -------------------- |
|||
|
||||
math64 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: нет Всего: 72 |
У меня 32-разрядная ubuntu, gcc 4.4.5, про массив такого объема сразу выдаёт sizeof array too large. Максимум даёт выделить 2GB (что естестственно для 32-разрядной ОС), но компилируется очень долго. Размер откомпилированного файла - 7K.
|
|||
|
||||
math64 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: нет Всего: 72 |
компилируется на самом деле быстро, долго линкуется. Наверно, создаёт временный файл размером 2GB (в случае borisbn -12GB), а потом обрезает до 7K.
borisbn, у Вас есть столько свободного места? |
|||
|
||||
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
Честно говоря, не знаю (с линуксами не дружу). Вот, что выдаёт df
Причём, я работаю в каталоге /home/user (т.е. каталог с проектом находится там), но работаю из-под root'а. Если мне доступно только /dev/sdg2, тогда понятно, что тупо не хватает места, если же /dev/sdg3 - то места, как видите, достаточно -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
500mhz |
|
|||
шайтан Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
Я понял в чем проблема )))
В заголовке ELF размер секции 4 байтами определяется (при 32битном ельфе) так что туда 12гб по определению не влезут ))) -------------------- |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | GNU toolchain | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |