Bom dia.  
	Estou tentando fazer uma leitura de structs que eu inseri em um arquivo binário, mas está dando erro na hora da leitura.
 
	Segue o código da função de leitura:
 
void lerRegistros(char* file_name)
{
	ifstream entrada;
	entrada.open(file_name, ios::binary);
	
	if ( entrada )
	{
		entrada.seekg(0, entrada.end);
		int tam = entrada.tellg();
		entrada.seekg(0, entrada.beg);
		
		int numero_registros = tam / sizeof(registro);
		
		registro* vetor_registros = new registro[numero_registros];
				
	    for (int i = 0; i < numero_registros; i++) 
		{
			entrada.read((char*)(&vetor_registros[i]), sizeof(registro)); 	      
		}
		
		entrada.close();
			
		for ( int i = 0; i < numero_registros; ++i )
		{	
			cout << "Nome da banda: " << vetor_registros[i].nome << endl;
			cout << "Numero de integrantes: " << vetor_registros[i].numero_integrantes << endl;
			cout << "Estilo: " << vetor_registros[i].estilo << endl;
			cout << "Ano de criacao: " << vetor_registros[i].ano_criacao << endl;
			cout << "Melhor hit: " << vetor_registros[i].musica_famosa << endl;
			cout << endl;
		}
		
		vetor_registros = NULL;
		delete[] vetor_registros;
	}
	else
	{
	 	cout << "Erro na leitura do arquivo!";
	}
	
	return;
}
	No programa, eu peço o nome do arquivo para ler os registros e passo esse nome para a função de leitura. O mais estranho é que se eu rodar o programa sem fechar ele, a leitura é feita normalmente após cada inserção de um novo registro. Mas se eu fechar o programa e abrir ele de novo, e tentar ler do mesmo arquivo que já foi criado aí dá erro na leitura e o programa fecha na hora. Se alguém souber o que pode ser, eu agradeço.