Это может выглядеть так:
int i, j, ROWS = 2, COLS = 6;
char ***map = malloc(ROWS * sizeof(char **));
for (i = 0; i < ROWS; ++i)
{
map[i] = malloc(COLS * sizeof(char*));
for (j = 0; j < COLS; ++j)
map[i][j] = malloc(2 * sizeof(char));
}
Обратите внимание, что 2 char
s позволяют вам хранить эти символы, но это может вызвать некоторые проблемы, если вы собираетесь работать с ними в виде строки (printf("%s
, strcpy
...). В этом случае я бы предпочел выделить память на 3 char
с, чтобы можно было также сохранить символ завершения.
Также обратите внимание, что вы должны очистить эту память, как только она будет выделена, и очистка должна быть выполнена в обратном порядке в соответствии с распределением. Это может выглядеть так:
for (i = 0; i < ROWS; ++i)
{
for (j = 0; j < COLS; ++j)
free(map[i][j]);
free(map[i]);
}
free(map);
Надеюсь, это поможет.