2016-03-27 8 views
-2

Meine Frage ist einfach und hat viele hochrangige Antworten, die mir über den Kopf geflogen sind, wenn ich ehrlich bin. Ich beginne damit, warum ich dieses Array brauche, es wird als ein 2d-Koordinatensystem verwendet, das auf einen Millimeter genau ist. Mein Code ist unten angegeben, ich habe versucht, das Array auf dem Heap (Speichertyp) zu definieren, aber ich hatte kein Glück. Gehen Sie einfach auf mich Jungs, ich habe litterally habe gerade angefangen C++ heute :)großes 2d Array in C++ (möglich?)

edit: Ich visuelle Studios

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

[Diese QA] (http://stackoverflow.com/questions/1847789/segmentation-fault-on-large-array-sizes) nicht helfen? – LogicStuff

+0

Bei einigen Plattformen oder Compilern ist die Größe globaler Variablen begrenzt. Möglicherweise müssen Sie dynamischen Speicher verwenden (siehe auch "Operator neu"). –

+0

@LogicStuff Ich lese diese Lösung vor dem Posten hier und leider hat es nicht geholfen –

Antwort

0

Denken Sie an die Speicherbedarf bin mit

Sie bräuchten 100000x100000 aufeinanderfolgende Zeichen

Das 10 Milliarden Bytes ist

Oder 93,132 gibibytes RAM, wenn ich gut meine Mathe tat.

Sie würden eine Menge schreckliche Swap-Speicher benötigen als PC mit mehr als 64GiB RAM sind heute nicht üblich.

Aber das ist auf einem universitären Mainframe/Cluster leicht erreichbar.

I 9.3GiB stehe korrigiert, ist dies machbar mit mehr als 10GiB RAM.

+0

Davon soll ich wegnehmen, dass meine anfängliche Vermutung von "Das ist viel zu groß" richtig war? –

+0

Ja, aber hängt davon ab, woran Sie gerade arbeiten. Wenn es viele lokalisierte Operationen gibt, ist das Auslagerungs-Paging nicht so schlimm. Aber Sie müssen in der Speicherzugriffsreihenfolge vorsichtig sein, um die Cache-Misses zu minimieren. – xvan

+0

Danke @WhozCraig, fixed – xvan