IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

plantage au niveau d'une allocation.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut plantage au niveau d'une allocation.
    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

  2. #2
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    La variable pointé pas pulValeur est bien initialisé ?
    Car la tu places une valeur dans un long pointé par pulValeur.

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut
    l'erreur venait de la taille du bus processeur ( alignement des membres de la structure ) qui était de 1 octet sur windows, et sur pocket pc apparemment ca passe pas avec cette taille ......... ?

    J'ai absolument besoin d'un alignement sur 1 octet, si quelqu'un peut m'aider .........

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/12/2006, 23h37
  2. Réponses: 11
    Dernier message: 11/11/2006, 12h20
  3. Mise à niveau d'une base par rapport à une autre
    Par plutonium719 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 01/09/2006, 22h22
  4. CR9 - Plantage si demande : Créer une nouvelle connexion
    Par CR9-Deb dans le forum Connectivité
    Réponses: 3
    Dernier message: 06/04/2006, 14h12
  5. [Oracle 9.1] Plantage SQL+ à cause d'une requête
    Par ftrifiro dans le forum Oracle
    Réponses: 8
    Dernier message: 04/10/2005, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo