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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2011, 16:16   #1
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
Вопрос Большая матрица и StackOverflow

Можете подсказать, если мне в c++ нужно хранить матрицу A[20000][20000], то я пишу #pragma comment(linker, "/STACK:1953125") , по моим расчетам стека 1953125 Кб, должно точно хватить, а все равно Stack Overflow
Gapro вне форума Ответить с цитированием
Старый 20.10.2011, 16:41   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

по моим расчетам стека 1953125 Кб, должно точно хватить

стек в 2 гигабайта? :LOL:
Rififi вне форума Ответить с цитированием
Старый 20.10.2011, 16:54   #3
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

а зачем устанавливать размер стека?

такую матрицу можно хранить либо в глобальной переменной, либо в динамически выделенном буфере в памяти
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 20.10.2011, 17:15   #4
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Цитата:
Сообщение от haruhi Посмотреть сообщение
а зачем устанавливать размер стека?

такую матрицу можно хранить либо в глобальной переменной, либо в динамически выделенном буфере в памяти
Похоже, что хранить матрицу в динамической памяти единственный выход, однако это повлияет на скорость, а в моей задаче она очень важна
Gapro вне форума Ответить с цитированием
Старый 20.10.2011, 17:30   #5
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от Gapro Посмотреть сообщение
Можете подсказать, если мне в c++ нужно хранить матрицу A[20000][20000], то я пишу #pragma comment(linker, "/STACK:1953125") , по моим расчетам стека 1953125 Кб, должно точно хватить, а все равно Stack Overflow
Храните матрицу не в стеке, а в статической памяти, то есть объявите ее глобально вне функций.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 20.10.2011, 17:34   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
однако это повлияет на скорость, а в моей задаче она очень важна
ни капли, стек таже ОЗУ, вам просто нужен линейный массив(20000*20000), и руками преобразовывать(нужно из-за того что что массив массивов будет медленнее) двухмерный индекс в линейный.(это если динамический массив)
потери будут при выделении памяти(при динамике), но скорость таже.

а с глобальным преобразование не нужно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.10.2011, 19:29   #7
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Смотря какая матрица и зачем она нужна. Если разреженная матрица, то нули можно и не хранить.
An1ka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
большая степень sp.caster Visual C++ 4 10.05.2011 15:02
большая программа Serg12 Помощь студентам 1 09.02.2010 23:56
не большая просьба Informer Свободное общение 3 02.06.2009 19:06
БоЛьшая степень n1ce > Kuzia Паскаль, Turbo Pascal, PascalABC.NET 5 28.05.2009 12:02
Большая проблема BlackOmen Работа с сетью в Delphi 2 16.03.2008 19:02