Rick York
Первый выделяет массив указателей на двойники размера M и присваивает его a.
Второй загружает массив a с M массивами двойников размера N.
Двойная звездочка указывает на наличие двумерного массива двойников. Эти фрагменты кода на самом деле являются двумя шагами, участвующими в выделении 2D-массива.
new переводится как malloc или calloc на языке Си. Я предпочитаю Каллок. Также помните, что в C++ вы освобождаете объекты с помощью delete, а в C используете free.
По привычке, каждый раз, когда вы пишете процедуру распределения, как те, также напишите соответствующую процедуру освобождения. Вы должны держать их в синхронизации, чтобы правильно освободить память. Это одна из наиболее распространенных причин ошибок, поэтому, если вы примете эту привычку, вы сэкономите себе много головной боли и потраченного впустую времени.