Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2008, 12:36   #1
Adamant
Пользователь
 
Аватар для Adamant
 
Регистрация: 20.09.2007
Сообщений: 99
По умолчанию максимальный размер массива в 32-битной оси

Какой максимальный размер массива можно создать в 32-битной оси? (имеется в ввиду Mb)
Голова человеку дадена - не токмо шапку носить!
Adamant вне форума Ответить с цитированием
Старый 03.12.2008, 17:28   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

максимальный размер массива в 32 битной Windows - это 2 гигабайта минус 64 КБ. т.е. примерно массив из 500 миллионов элементов типа integer. Это теоретически. Но фактически меньше, вычти из этого размер самого экзешника, размер системных DLL (примерно 10 метров), минус ещё метров 15-20 "прочей лабуды". И получается примерно 1,9 ГБ это максимальный размер массива.
rpy3uH вне форума Ответить с цитированием
Старый 03.12.2008, 18:24   #3
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Цитата:
И получается примерно 1,9 ГБ это максимальный размер массива
Пробовал, получаю ехе файл, компилятор не ругается, всё ок. Пытаюсь запустить, мне выдаёт: это приложение не Win32. Размер массива уменьшил до 1.85 гб - всё ок.
Попытался объявить 2 массива по 1.85 гб - тоже компиляция проходит, а запуск - нет, что и правильно. Вот такие эксперименты

P.S.: величина 1.85 - условная, видимо она всё же "хочет" быть 1.9. Я дальше экспериментировать не стал.
zetrix вне форума Ответить с цитированием
Старый 03.12.2008, 19:00   #4
Adamant
Пользователь
 
Аватар для Adamant
 
Регистрация: 20.09.2007
Сообщений: 99
По умолчанию

Ребята спасибо вам большое. Вполне исчерпывающий ответ (и спасибо за потраченное вами время)
Голова человеку дадена - не токмо шапку носить!
Adamant вне форума Ответить с цитированием
Старый 03.12.2008, 20:49   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от zetrix Посмотреть сообщение
P.S.: величина 1.85 - условная, видимо она всё же "хочет" быть 1.9. Я дальше экспериментировать не стал.
надо ещё помнить что, данные в памяти фрагментированы. сама программа, системные DLL, стеки потоков, и прочая "лабудень". Они находятся не в одном месте.
Выделить сплошной участок памяти размером 1,9 ГБ почти невозможно. Да и тем более сама система ставит какие-то ограничения.

Последний раз редактировалось rpy3uH; 03.12.2008 в 20:55.
rpy3uH вне форума Ответить с цитированием
Старый 03.12.2008, 21:14   #6
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

Цитата:
Выделить сплошной участок памяти размером 1,9 ГБ почти невозможно.
а разве массив располагается в памяти не в одном месте? насколько мне известно - да, т.е следующий элемент стоит рядом с предыдущим. это видно и в отладчике, да и у рихтера я это помню) или это от чего то зависит?
vvviperrr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Максимальный элемент массива j_Q Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 04.11.2008 22:48
В каждой строке массива выбирается максимальный элемент sergeyfsd Общие вопросы Delphi 2 13.05.2008 00:10
Размер массива в Delphi simple_Pro Помощь студентам 2 11.05.2008 09:15
Chart оси lenivec Общие вопросы Delphi 1 09.02.2008 11:37
Как узнать размер массива мандарин Общие вопросы Delphi 2 30.05.2007 19:18