Dynamische Speicherzuweisung 2d-array in C
int **twoDary = (int**) (malloc(rows * sizeof(int *)));
int **twoDaryStart = twoDary;
int *currentrow;
for ( i = 0; i < rows; i++ ){ //Originally: for (i = 0; i < columns; i++)
*(twoDary + i) = (malloc(columns * sizeof(int)));
}
for (j = 0; j < rows; j++) {
currentrow = *(twoDary + j);
for ( i = 0; i < columns; i++ ) {
*(currentrow + i) = i;
printf("%d\n", *(currentrow+i));
}
}
Ich versuche zum erstellen einer dynamischen 2-D-array. Ich bin dann zuweisen wollen, ich ,der Strom i (in der inneren for-Schleife) auf jedes element in jeder Zeile. Also meine Ausgabe soll die zahlen 0 - Spalte gedruckt row Zeiten.
Dass ich immer ein seg-fault, wenn meine Zeilen und Spalten sind nicht das gleiche, also 5 Zeilen, 10 Spalten. Kann jemand sehen, aus diesem code, warum das passiert?
eigentlich
currentrow
initialisiert bei seinem ersten Einsatz in der zweiten Schleife. Die variable twoDaryStart
initialisiert wird, aber ungenutzt. Sie bevorzugen könnte, um Ihren Kommentar zu löschen.InformationsquelleAutor SystemFun | 2013-02-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre erste Schleife sollte:
Anscheinend ist der code konsistent war (aber falsch) — das selbe problem war in der
free()
code. Hier ist meine SSCCE für das problem. Ist es gegeben, einen sauberen Gesetzentwurf der Gesundheit vonvalgrind
.Ah nevermind, ich brauche, um zu beheben, das gleiche problem in einer freien Schleife; danke!
Dass werden es tun...
InformationsquelleAutor Jonathan Leffler