Создание массива указателей для каждой строки для получения объекта, который «выглядит», как многомерный массив переменной размерности , является дорогостоящим выбором дизайна для синтаксического сахара . Не делайте этого.
Правильный способ создания многомерного массива переменного размера - это что-то вроде:
if (w > SIZE_MAX/sizeof *m/h) goto error;
m = malloc(w * h * sizeof *m);
if (!m) goto error;
...
m[y*w+x] = foo;
Если вы хотите, чтобы он выглядел красиво, чтобы вы могли напишите m[y][x]
, вы должны использовать другой язык, возможно, C ++.