Bonjour, je développe en C++ pour pocket pc, mon appli windows fonctionne correctement mais son équivalent pocket plante au niveau d'une allocation d'un pointeur. Je ne sais comment l'expliquer :

voici le passage de paramètres à la fonction :
usCr = MC_usLireUnsignedLong(usNumFichierBinaire,
(unsigned long *) &(pEntete->stTailleDonnees));
La fonction :
unsigned short API_ENTRY MC_usLireUnsignedLong(unsigned short usNumFichierBinaire,
unsigned long* pulValeur)
{
unsigned short usCr = OK;
long posChamp=0;
int temp1 = 0;
int temp2 = 0;
int temp3 = 0;
int temp4 = 0;

/* On se positionne sur le bon fichier */
InfosFichier* psFichier = NULL;

usCr = usRechercherFichier(usNumFichierBinaire,&psFichier);

/* Enregistrement de la position du champs dans le fichier */
if ( (posChamp=ftell(psFichier->pFichier)) <0)
usCr = ERR_FICHIER_STRUCTURE;

if (usCr == OK) {
temp1 = fgetc(psFichier->pFichier);
temp2 = fgetc(psFichier->pFichier);
temp3 = fgetc(psFichier->pFichier);
temp4 = fgetc(psFichier->pFichier);

if (temp1==EOF || temp2==EOF || temp3==EOF || temp4==EOF)
usCr = ERR_FICHIER_STRUCTURE;

if (usCr == OK) {


*pulValeur = (((unsigned short)temp1)<<24) +
(((unsigned short)temp2)<<16) +
(((unsigned short)temp3)<<8) +
(unsigned short)temp4;

}

}
return usCr;
}

Et ca plante au niveau de :
*pulValeur = (((unsigned short)temp1)<<24) +
(((unsigned short)temp2)<<16) +
(((unsigned short)temp3)<<8) +
(unsigned short)temp4;
Je ne vois pas pourquoi, mon pointeur a bien une adresse.

Merci de votre aide