dynamic allocating array of arrays in C

The m[line][column] = 12 syntax is ok (provided line and column are in range).

However, you didn’t write the code you use to allocate it, so it’s hard to get whether it is wrong or right. It should be something along the lines of

m = (int**)malloc(nlines * sizeof(int*));

for(i = 0; i < nlines; i++)
  m[i] = (int*)malloc(ncolumns * sizeof(int));

Some side-notes:

  • This way, you can allocate each line with a different length (eg. a triangular array)
  • You can realloc() or free() an individual line later while using the array
  • You must free() every line, when you free() the entire array

Leave a Comment