2016-03-27 2 views
-2

Мой вопрос прост и имеет много ответов высокого уровня, которые пролетели над моей головой, если я полностью честен. Начну с того, почему мне нужен этот массив, он будет использоваться как система координат 2d, которая будет точной до миллиметра. Мой код указан ниже, я попытался определить массив в куче (тип памяти), но мне не повезло. Полегче на меня, ребята, я уже litterally только начал C++ сегодня :)большой массив 2d в C++ (возможно?)

редактирования: Я использую визуальные студии

#include <iostream> 
using namespace std; 
char x [100000][100000]; 
int main() 
{ 
} 
+1

[Этот QA] (http://stackoverflow.com/questions/1847789/segmentation-fault-on-large-array-sizes) не помогло? – LogicStuff

+0

Некоторые платформы или компиляторы будут иметь ограничения на размер глобальных переменных. Возможно, вам потребуется использовать динамическую память (a.k.a. 'operator new'). –

+0

@LogicStuff Я прочитал это решение перед публикацией здесь и, к сожалению, это не помогло –

ответ

0

Придумайте след памяти

вам нужно 100000x100000 последовательных символов

Это 10000000000 байт

Или 93.132 gibibytes оперативной памяти, если я сделал мои математику хорошо.

Вам понадобится тонна ужасной памяти подкачки, так как обычные ПК с более чем 64 гигабайтами RAM не распространены.

Но это легко достижимо на университетском мэйнфрейме/кластере.

Я стою исправленный 9.3GiB, это выполнимо с более чем 10GiB бара.

+0

Из этого я должен отнять, что мое первоначальное предположение, «Это слишком много», было правильным? –

+0

Да, но зависит от того, над чем вы работаете. Если есть много локализованных операций, подкачка подкачки не будет такой плохой. Но вам нужно быть осторожным в порядке доступа к памяти, чтобы минимизировать промахи в кэше. – xvan

+0

Спасибо @WhozCraig, исправлено – xvan

Смежные вопросы