![]() |
|
Модераторы: bsa |
![]()
|
|
| marsh123 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.6.2008 Репутация: нет Всего: нет |
Добрый день.
Нужно создать массив размера 4294967296, язык C. Обычное объявление, естественно, не работает:
Вот такой вариант, вроде как, работает:
НО! Чертов варнинг:
Портит всю малину! Необходимо убрать варнинг, помогите в этом деле пожалуйста. Заранее очень благодарен. |
||||||
|
|||||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Что за необходимость? У Вас 64-битная система? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
marsh123, 32-х разрядная машина может адресовать не более 4 ГБ оперативной памяти (без учета памяти, отводимой под устройства ввода/вывода). Ты же пытаешься выделить 16 ГБ. Ты уверен в том, что ты все делаешь верно?
|
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 3 Всего: 19 |
ты недовыделяешь память. Используй calloc.
-------------------- You're face to face With man who sold the world |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
странное желание, выделить 16Гб
никогда не использовал. а в чем профит? |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 3 Всего: 19 |
Задаешь размер куска двумя size_t аргументами, выделенный размер равен их произведению.
Добавлено через 1 минуту и 49 секунд Не странное. даже если столько памяти нет, это может просто упростить работу с разреженными данными. -------------------- You're face to face With man who sold the world |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
ы. так это ж malloc(nmemb*size); к тому же:
совсем неразумны затраты %) может создать экстремальную программу, способную работать на экстремальном железе. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
попробуй
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| marsh123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.6.2008 Репутация: нет Всего: нет |
Никогда не использовал calloc, я вас правильно понял?
но варнинг остается. памяти столько есть, машина х64, но вся она не будет использоваться все равно, это нужно для удобства структурирования. borisbn, это тоже оставляет варнинг. Это сообщение отредактировал(а) marsh123 - 29.2.2012, 11:26 |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 3 Всего: 19 |
Ммм да, я наврала с calloc. Выделить на процес больше size_t все равно ведь не получится. Если у ТС такой ворнинг, значит у него 32битная система, и нужно придумывать что-то другое.
-------------------- You're face to face With man who sold the world |
|||
|
||||
| marsh123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.6.2008 Репутация: нет Всего: нет |
Проблема решилась вот так:
И даже делает вид, что работает, но при попытке доступа к R[4294967295] возникает аварийный останов почему-то, хотя при доступе к R[4294967294] всё нормально |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
marsh123, объясните-ка лучше задачу. я уверен в том, что нет надобности выделять такой объем памяти.
|
|||
|
||||
| marsh123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.6.2008 Репутация: нет Всего: нет |
Есть алфавит, состоящий из букв от 0 до 2^32-1. Необходимо для каждой буквы алфавита построить список её вхождений в некотором тексте, если буква не встречалась, то NULL список собственно. Всё это нужно для быстрого доступа к спискам потом. Это сообщение отредактировал(а) marsh123 - 29.2.2012, 11:48 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
ну и как из задачи вытекает требование хранить все данные в памяти?
|
|||
|
||||
| marsh123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.6.2008 Репутация: нет Всего: нет |
У меня всего 2 варианта решения, тот, что в 1 посте и еще 1, построить бинарное дерево, где ключом будет буква, а значением ссылка на список буквы. Но тогда придется писать AVL или RB, было немного лень, но, похоже, придется. Может есть ещё какие-то решения, на чистом СИ? |
|||
|
||||
![]()
|
| Правила форума "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. |