В программе на C ++ вы должны использовать оператор new.
Что касается mallo c, то в C ++ M должно быть константным выражением, если вы хотите выделить двумерный массив.
Вы можете написать, например,
int ( *arr )[M] = ( int ( * )[M] )malloc( N * M * sizeof(int) );
или
int ( *arr )[M] = ( int ( * )[M] )malloc( sizeof( int[N][M] ) );
Если использовать оператор new, то распределение может выглядеть следующим образом:
int ( *arr )[M] = new int[N][M];
Если M не является константой времени компиляции, тогда вы можете использовать стандартный контейнер std::vector
, как показано в демонстрационной программе ниже
#include <iostream>
#include <vector>
int main()
{
size_t n = 10, m = 10;
std::vector<std::vector<int>> v( n, { m } );
return 0;
}