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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2009, 12:05   #1
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию проблема с памятью

доброго времени суток!
такая проблема. выделяю память,

long long* array1 = new long long [n]
при маленьких n нормально всё работает. но при больших n - нет.
вывод: нехватка памяти.
стандартное максимальное выделяемое значение кажись можно как-то поменять, ток я не знаю как .среда: с++ билдер6
Dimarik вне форума Ответить с цитированием
Старый 02.12.2009, 12:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
стандартное максимальное выделяемое значение кажись можно как-то поменять
Насколько n большие? Никогда с такой проблемой не сталкивался даже при 100Мбайтах выделения...
Вот такое
Код:
{
const long n=100000000;
int i;
long long* array1 = new long long [n];
for(i=0;i<n;i++){array1[i]=rand(); cout<<array1[i]<<'\t';}
delete[] array1;
system("pause");
	return 0;
}
У меня работает отлично
I'm learning to live...

Последний раз редактировалось Stilet; 02.12.2009 в 12:11.
Stilet вне форума Ответить с цитированием
Старый 02.12.2009, 14:49   #3
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

это числа от 0 до 2^63-1
Dimarik вне форума Ответить с цитированием
Старый 02.12.2009, 15:11   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ниче сее числишки...
Просто насколько я знаю long long даже такое не потянет... да и винда не позволит...
Если не секрет зачем такой массив огромный?
I'm learning to live...

Последний раз редактировалось Stilet; 02.12.2009 в 15:16.
Stilet вне форума Ответить с цитированием
Старый 02.12.2009, 16:15   #5
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

long long занимает 64 бита. то есть от -2^63 до 2^63-1.
для RSA нужны.
там вообще используются и 2^1024. но длинную арифметику юзать пока не буду
Dimarik вне форума Ответить с цитированием
Старый 02.12.2009, 16:18   #6
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

такие числа можно представить как массив с элементами числа по основанию 1, 10000 итд, например

2^64 будет выглядеть примерно так
{2^32, 2^32}
читайте про длинные числа

ps опоздал

Последний раз редактировалось NiCola999; 02.12.2009 в 16:22.
NiCola999 вне форума Ответить с цитированием
Старый 02.12.2009, 18:06   #7
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

да и без длинной арифметики тут можно. long long хавает их.
просто массив размером в 64^2 бит не корректно работает. памяти не хватает
Dimarik вне форума Ответить с цитированием
Старый 02.12.2009, 18:30   #8
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Dimarik
не хватит их для rsa. например, если q и p у тебя будут четырехзначными, там получится намного бОльший порядок. Используй алгоритм быстрого возведения в степень, при котором остаток от деления можно считать по частям.

пс. вместо long long лучше использовать __int64 (но не в контексте данной задачи!)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 02.12.2009, 19:45   #9
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

так это ж то же самое
Dimarik вне форума Ответить с цитированием
Старый 02.12.2009, 19:59   #10
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Dimarik Посмотреть сообщение
long long* array1 = new long long [n]
при маленьких n нормально всё работает. но при больших n - нет.
вывод: нехватка памяти.
Цитата:
Сообщение от Stilet
Насколько n большие?
Цитата:
Сообщение от Dimarik
это числа от 0 до 2^63-1
Вы отдаёте себе отчёт в том, что делаете? Да, согласен, сейчас расцвет технологии и всё такое, но тем не менее не у каждого на компьютере есть 73786976294 Гб оперативки
netrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Win7 проблема с памятью. Bilargo Windows 5 14.10.2009 20:07
Перебор с памятью artemavd Общие вопросы Delphi 12 24.05.2009 06:48
Проблема с выделенной памятью Ivan_32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 27.02.2009 02:14
c++ Builder, проблема с памятью Ламер_001 C++ Builder 9 22.11.2008 11:59
Проблема с памятью в С++ rJIaBkoM Помощь студентам 1 14.06.2008 14:25