Wie Sie dynamisch reserviert einen zusammenhängenden block von Speicher für ein 2D-array

Wenn ich das zuordnen eines 2D-array wie folgt int a[N][N]; Sie weisen einen zusammenhängenden block von Speicher.

Aber wenn ich versuchen, es zu tun dynamisch wie diese :

int **a = malloc(rows * sizeof(int*));
for(int i = 0; i < rows; i++) 
   a[i] = malloc(cols * sizeof(int));

Dieser verwaltet eine Einheit stride zwischen den Elementen in den Zeilen, aber dies kann nicht der Fall sein, zwischen den Zeilen.

One-Lösung ist die Konvertierung von 2D-zu-1D, außerdem gibt es einen anderen Weg, es zu tun?

Oh, und bitte, bitte, bitte nicht umgewandelt den Rückgabewert von malloc().
Mein Fehler, ich kopiere den code von c++ - thread xD

InformationsquelleAutor dreamcrash | 2012-11-23

Schreibe einen Kommentar