L'errore è all'inizio e sinceramente non so come faccia il programma a funzionare per qualunque numero ...
codice:
int dim, i, j;
int ** m = new int*[dim];
Qui dim non è definito o è uguale a 0, per cui l'allocazione che fai non ha alcun significato.
Codice corretto:
codice:
#include <iostream>
using namespace std;

int main(){
	int dim, i, j;
	int **m;
	
	
	cout << "Choose the dimension of the squared matrix: ";
	cin >> dim;
	
        m = new int*[dim];
	for(i=0;i<dim;i++){
		m[i] = new int[dim];
	}
	
	for(i=0;i<dim;i++){ // Righe
		
		for (j=0;j<dim;j++){ // Colonne
			m[i][j] = i*dim + (j + 1);
		}
		
	
	}
	

	for(i=0;i<dim;i++){ // Righe
		
                for (j=0;j<dim;j++){ // Colonne
			cout << " " << m[i][j] << " ";
		}
		cout << endl;
	}

        return 0;
}
Così dovrebbe andare.