Как C выделяет пространство для 2D (3D…) массива при использовании malloc?

У меня проблема с пониманием того, как C выделяет пространство для 2D (или более многомерного) массива, особенно когда мы используемmalloc и тому подобное. Принять программу вэтот вопрос например.

Сначала определяется одномерный массив указателей, затем указатели на массивы одномерных данных (в данном случае строк) помещаются в каждый из блоков первого одномерного массива. Таким образом, нет гарантии, что весь 2D-массив является смежным (за последней ячейкой предыдущего ряда следует первая ячейка следующего ряда). Каждый одномерный массив данных может быть очень далеким, только их указатели являются смежными. Я прав или я что-то упустил? Буду очень признателен, если вы поможете мне уточнить это.

Ответы на вопрос(3)

Ваш ответ на вопрос