Ya he visto porqué, porque si pones un n mas grande que m el bucle que muestra los datos intenta acceder a datos a los que no puede. Disculpa, no me di cuenta de eso la primera vez. Un saludo!
Código C++:
Ver originalfor (int j=0;j<m;j++) {
cout<<ar[j].get_name()<<endl;
}