| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Максимальный размер массива |
| Автор: MystDeim 22.11.2007, 22:04 |
| Нужно создать массив большого размера порядка миллиарда строк! При создании массива уже больше миллиона строк Билдер вылетает с ошибкой... :( |
| Автор: DjoNIK 22.11.2007, 22:14 |
Какой тип данных? ЗЫ: точно "нужно"? |
| Автор: Alek86 22.11.2007, 22:22 |
| DjoNIK, та любой тип данных массив, наверна, статический делается MystDeim, делай массив динамическим и не балуйся такими размерами памяти - лучше потом довыделить... а еще лучше подучить STL (std::vector) |
| Автор: Treod 22.11.2007, 22:23 |
У тя какой тип данных, если double, должно работать... |
| Автор: MystDeim 22.11.2007, 22:39 |
| Тип данных char длина строки 25 символов, а строк нужно очень много! |
| Автор: srd 22.11.2007, 22:43 |
| Ты неверно решаешь задачу. Массив такого размера не может быть нужен |
| Автор: MAKCim 22.11.2007, 22:54 | ||
итого ~25GB не сильно ли много? если не секрет, что за задача? |
| Автор: MystDeim 22.11.2007, 23:01 |
| Ну с размером я конечно загнул А задаче эта - поиск путей и контуров в графе. Дык, как можно сделать большой массив? |
| Автор: DjoNIK 22.11.2007, 23:15 |
Сказали же делай динамический массив. |
| Автор: archimed7592 23.11.2007, 02:22 |
Есть ещё такая маленькая проблемка: современные 32-битные ОС со скрипом отдают в адресное пространство 3 гига из 4-х. Отсюда нужно вычесть размер проги(и размеры библиотек и т.п.), так что в общём и целом получается не очень много |
| Автор: SaDFromSpb 23.11.2007, 09:48 |
Послушали бы тебя лет 20 назад... |
| Автор: archimed7592 23.11.2007, 12:38 | ||
Позволяет адресовать их ОС. Процессу в любом случае достаётся 4-х гиговое пространство(которое в реальности урезано до 3-х и то об этом попросить нужно |
| Автор: Vredniy 23.11.2007, 15:43 |
| Объяви массив вне main() |
| Автор: incondition 20.1.2008, 01:37 | ||||
Есть чипсеты, позволяющие системно адресовать 8 гигабайт и даже 32 гигабайта оперативной памяти... Это так, к слову... |
| Автор: MAKCim 20.1.2008, 10:14 | ||
от 32-х разрядного адресного пространства все равно никуда не денешься нужно будет использовать PAE и AWE |
| Автор: archimed7592 20.1.2008, 10:44 | ||
Есть архитектура, позволяющая адресовать не то что гигабайты - терабайты и даже больше. Название у неё IA-64(Itanium2). Это так, к слову А если серьёзно, то если речь о IA-32, то Макс уже сказал - никуда не денешься и на процесс больше 4-х гиг не родишь. |
| Автор: bsa 20.1.2008, 20:36 | ||
|
| Автор: Vetyska 23.1.2008, 09:43 |
Модератор: Сообщение скрыто. |
| Автор: MAKCim 23.1.2008, 10:28 |
| bsa, физическое адресное пространство 64Гб по крайней мере адресная шина GTL+, применяемая в современных FSB, является 36-ти разрядной а именно она диктует фактическую разрядность физического адресного пространства теоретически разрядность физического адреса, поддерживаемого процессором, может быть больше разрядности шины и в целом зависит от реализации |
| Автор: bsa 23.1.2008, 11:56 | ||
MAKCim, то, что я написал, было основано на cpuinfo:
|
| Автор: Lycifer 23.1.2008, 12:06 |
| Зачем нужен массив? Если для изменения или выборки элемента то используй SQL. Конечно если нужно делать математические расщёты то придётся делать выгрузку в С++. Ну или же если не знаеш SQL то хрони в файлах. |
| Автор: Lazin 23.1.2008, 12:19 |
| Lycifer, иногда приходится обрабатывать большие объемы данных, например кэшировать что-нибудь в памяти, здесь SQL не поможет))) |
| Автор: MAKCim 23.1.2008, 13:12 |
AMD? я же имел в виду Intel все равно это никак не проиворечит тому, что я написал все зависит от реализации |
| Автор: bsa 23.1.2008, 13:39 | ||||
У Intel действительно поменьше:
|
| Автор: Lycifer 23.1.2008, 14:24 |
| Lazin я же писал зачем нужен массив? А несколько мильярдов строк кеш не сможет поддерживать, да и зачем сдесь кэшировать? SQL по выборки очень быстро работает, так что это особо не имеет смысла. |