Absturz bei großem Array
-
Hallo,
ich habe ein Projekt in dem ziemlich viele Felder enthalten sind.
Jetzt hab ich unter anderem ein Felddouble kennlinie[147][3][100];
dieses Feld soll aber größer werden:
double kennlinie[147][3][1000];
jedoch stürzt mir der Compiler sobald er fertig mit compilieren ist einfach ab, wenn ich die dritte dimension größer als ca. 140 mach.
Weiß einer woran das liegen könnte? Mit 100 funktioniert es einwandfrei!Gruß
Christian
-
Stackspeicher ist begrenzt, dein Array ist zu groß. Leg es im Freispeicher oder auf dem Heap an (malloc/new).
-
ach so!kannst du mir da mal ein beispiel geben wie das geht?!
-
Hab das Problem leider immer noch, wie kann ich denn ein 3-Dimensionales Array mit new allozieren??!
int *p; p=new int [100][100][1000];
funktioniert leider nicht!
-
Hättest du mal in die FAQ geschaut, hättest du vielleicht einen Beitrag mit dem Titel "dynamische mehrdimensionale Arrays" gefunden...
-
Danke, das hat mich jetzt auch schon etwas weiter gebracht, ich erstelle mir mit
int (*pArr)[3][1000] = 0; pArr = new int[147][3][1000]; // ... // Am Ende aufräumen nicht vergessen delete [] pArr;
ein Array der Größe [147][3][1000]. Doch leider läßt sich das Array nur lokal in einer Mathode erzeugen, ich sollte es aber global für die Klasse haben. Wie kann ich das denn realisieren?!
Viele Dank,
Gruß Christian
-
Kannst du sie nicht als Member anlegen und im Konstruktor allokieren und im Destruktor dann deleten?
-
Man logisch, big thx, da stand ich aufm Schlauch!!
-
Gerne...
Da grinste der Wurm im Brett vor'm Kopf.