Salve ragazzi, spero di aver aperto correttamente il topic

Il problema si presenta durante la lettura dal file con consegente inserimento nel vettore di classi, non capisco dov'è l'errore T___T
Se volete tutto il progetto, l'ho già hostato e vi passo il link per capire meglio...
grazie a tutti voi in anticipo


SCRITTURA SU FILE
codice:
void scrittura(){ 
          cout<<"Inserimento prodotti"<<endl; 
          FILE *fprod;
        int header,ins; 
        string n,ID;  
       float pu;  
         fprod = fopen("prodotti.dat", "rb");
         fseek(fprod,-sizeof(int),SEEK_END);
         fread(&header,sizeof(int),1,fprod);
           if(header<=0) {
                 cout<<"Non ci sono prodotti nel file"<<endl;
                 header=0;         }
         else cout<<"Sono presenti "<< header<<"prodotti"<<endl;
         prodotti *prod;
         cout<<"Quanti prodotti inserire? :"<<endl;
         cin>>ins; 
         int tot=header+ins; 
         prod=new prodotti[tot];
         rewind(fprod);
        fread(prod,sizeof(prodotti),header,fprod);
       fclose(fprod);                 for(int i=header;i<tot;i++){
      cout << "Inserisci ID prodotto numero "<<i+1<<": ";
     cin >> ID;                                 
prod[i].setidprod(ID);                                 
cout << "\nInserisci nome prodotto numero "<<i+1<<": ";                                 
cin >> n;                                 
prod[i].setnome(n);                                 
cout << "\nInserisci prezzo unitario del prodotto numero "<<i+1<<": ";                                 cin >> pu;                                
 prod[i].setpunit(pu);                                 
cout << endl;                 }                  
fprod=fopen("prodotti.dat","wb");                 
fwrite(prod,sizeof(prodotti),tot,fprod);  //SCRITTURA VETTORE DI CLASSI
fwrite(&tot,sizeof(int),1,fprod);       //SCRITTURA    HEADER      
fclose(fprod);                           
}

LETTURA DA FILE
codice:
void gestioneclienti(){  
FILE *fprod;  int header;  
fprod=fopen("prodotti.dat","rb");  	
fseek(fprod,-sizeof(int),SEEK_END); 	
fread(&header,sizeof(int),1,fprod); 		
fclose(fprod); 	
prodotti *prod; 	
cout<<"L'header è :"<<header<<endl; 	
prod=new prodotti[header]; 	
fread(prod,sizeof(prodotti),header,fprod);  
fprod=fopen("prodotti.dat","rb");  
fread(&prod,sizeof(prodotti),header,fprod); //lettura del file istantanea 	

for(int i=0;i<header;i++){ 	//ERRORE A RUNTIME	
cout<<"L'ID del prodotto è: "<<prod[i].getidprod()<<endl
       <<"la denominazione del prodotto è: "<<prod[i].getidprod()<<endl 			
<<"il prezzo unitario del prodotto è: "<<prod[i].getpunit()<<endl; 	
}  
	
fclose(fprod); 
}