codice:
char *Record;
...

Record=(char*)malloc((unsigned int) LenRecord-2);
fread(Record,(unsigned int) (LenRecord-2),1,fpi);
		
ByteTLE=(unsigned char) Record[6];
Chiave=(char*)malloc(ByteTLE-4+1);
for(i=10;i<(10+ByteTLE-4);i++)
	Chiave[i-10]= G_Table_EBCDIC_ASCII [(unsigned char) Record[i]];
Chiave[i-10]='\0';
ByteTLEValore=(unsigned char) Record[ByteTLE+6];
Valore=(char*)malloc(ByteTLEValore+1);
for(i=ByteTLE+10;i<ByteTLE+10+ByteTLEValore-4;i++)
	Valore[i-(ByteTLE+10)]= G_Table_EBCDIC_ASCII [(unsigned char) Record[i]];
Valore[i-(ByteTLE+10)]='\0';
			
strcpy(StrApp,Chiave);
strcat(StrApp,"=");
fwrite(StrApp,strlen(StrApp),1,fpo_tle);
strcpy(StrApp,Valore);
strcat(StrApp,"#");
fwrite(StrApp,strlen(StrApp),1,fpo_tle);

free(Record);
si impianta sull'ultima istruzione...
perchè non riesco ad effettuare la Free?