3dimensionale Arrays
-
hi,
ich habe ein Problem mit Arrays der Dimension 3.
Wenn ich ganz simpel folgendes mache:for (i = 0; i < 12; i++){ for (k = 0; k < 100; k++){ for (j = 0; j < 100; j++){ arrayPrioriX[i][k][j] = 0; } } } arrayPrioriX[1][1][1] = 99; printf("%d, %d\n", arrayPrioriX[1][1][1], arrayPrioriX[1][1][2]);
Eigentlich müsste ja die Ausgabe 99, 0 kommen. richtig?
Jedoch stürzt das Programm bei mir sofort ab, besetzt man 3dim Arrays anders?
initialiasiert habe ich es als
long arrayRioriX[12][100][100];
kann mir jeamnd helfen?
-
Eigentlich müsste ja die Ausgabe 99, 0 kommen. richtig?
Tut es auch, jedenfalls bei mir...
Jedoch stürzt das Programm bei mir sofort ab, besetzt man 3dim Arrays anders?
Kann man, muss man aber nicht. Diese Schleife kannst du durch memset ersetzten...
kann mir jeamnd helfen?
Ja... ich würde mal tippen dass du bei der Deklartion einen Fehler gemacht hast.
Aber warscheinlich bekommen alle Kopfschmerzen ab deiner Einrückung.
-
naja,
habe es als
long arrayPrioriX[12][100][100];
deklariert. ist daran etwas falsch?
-
Ich sehe in den Schnipseln für sich gesehen keinen Fehler, bei welcher Zeile tritt denn der Fehler auf?
-
Poste den ganzen Code mit Compiler Meldungen
-
das ist es ja, beim komplieren ergibt es keinen fehler.
kann es sein, dass das programm explodiert, denn ich besitze einige 3dim Arrays.
-
Was bedeutet denn "einige"?
Der Stack ist ja irgendwo begrenzt. Bei Windows fällt da öfters mal ein Wert von 1MB (aber was weiß ich schon). Bei mir sind es 2MB (Windows 7)
Betrachtet man dein Array mal genauer, so kommst bei dir was von 12*100*100*4 Byte raus. Rundet man mal grob auf, ist des fast scho ein halbes MB.
-
naja,
bei mir habe ich 6 mal so ein 3dim Array durchlaufen.
Also könnte es vielleicht daran liegen? Müsste ich es kleiner machen?
-
Verzweifelt85 schrieb:
habe es als long arrayPrioriX[12][100][100]; deklariert.
Verzweifelt85 schrieb:
printf("%d, %d\n", arrayPrioriX[1][1][1], arrayPrioriX[1][1][2]);
Nicht, dass dies einen Absturz auslösen würde, aber
long
sprintf
't man mit "%ld":printf("%ld, %ld\n", arrayPrioriX[1][1][1], arrayPrioriX[1][1][2]);
-
um das Problem zu beheben, ist das verkleinern sicher eine Idee, wenn dadurch deine Programmfunktionalität nicht drunter leidet.
Bevor ich hier was vom Heap erzähle (Speicheranforderung mittels malloc und realloc und so zeugs), wäre es wohl ratsam zu prüfen, ob du 6 3D-Arrays dieser Größe benötigst und ob man das nicht anders lösen könnte.
-
kann es sein, dass das programm explodiert, denn ich besitze einige 3dim Arrays.
lol
Wenn du so viel Speicher brauchst, dass dein programm "explodiert" solltest du es mit malloc machen. Schaffst du 1000 Mal grösserer Array.