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 :

Erreur memcpy(): segmentation fault.


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Erreur memcpy(): segmentation fault.
    Bonjour,

    J'ai code un serveur en c++ que je fait tourner sans probleme en local, Je l'ai ensuite mis sur un serveur sans rien changer au code.
    Le probleme c'est que maintenant mon programme ne marche plus et j'ai un segmentation fault du a un memcpy(), et je ne comprend pas du tout pourquoi!

    Voici mon code, j'utilise une bilbiotheque MagickWand permettant de manipuler des images.

    Code : C++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    unsigned char* GetSlice(char slice, int num, size_t * x, bool flip,bool rotate)
    { 
     
    //........
    //magick_wand est l'objet correspondant a mon image
    unsigned char* tmp = MagickGetImageBlob(magick_wand,x);	// Returns the BLOB (Binary Large OBject) of the current active image
    unsigned char * ret = new unsigned char[*x];
    memcpy(ret,tmp, *x); // l'erreur apparait a l'appel de cette fonction
     
    MagickRelinquishMemory(tmp);
    magick_wand = DestroyMagickWand(magick_wand);
     
    return ret;


    Ce que je ne comprend pas c'est pourquoi mon programme marchait en local et ne marche plus sur mon serveur.

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Je dirais vérifie les valeurs de tmp et x juste après l'appel de MagickGetImageBlob().

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par camboui Voir le message
    Je dirais vérifie les valeurs de tmp et x juste après l'appel de MagickGetImageBlob().
    Merci de ta reponse.

    J'ai fait un sizeof pour la taille de x qui fait 1octet et j'ai fait de meme pour tmp qui fait 4 octets.

    J'ai trouve ca bizare que x ne fasse que 1 octet sachant que j'avais 4 octets a copier, donc j'ai change sa valeur pour 4 octets mais j'ai toujours une seg fault.

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Romanzo_Criminale Voir le message
    Merci de ta reponse.

    J'ai fait un sizeof pour la taille de x qui fait 1octet et j'ai fait de meme pour tmp qui fait 4 octets.

    J'ai trouve ca bizare que x ne fasse que 1 octet sachant que j'avais 4 octets a copier, donc j'ai change sa valeur pour 4 octets mais j'ai toujours une seg fault.

    Je me suis juste trompe, je n'ai evidemment pas fait de sizeof pour x, j'ai juste afficher *x qui est de 1octet!

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Romanzo_Criminale Voir le message
    Je me suis juste trompe, je n'ai evidemment pas fait de sizeof pour x, j'ai juste afficher *x qui est de 1octet!
    1) vérifier que tmp != NULL
    2) si tmp != NULL, alors quelle que soit la valeur de *x, le code devrait fonctionner.

Discussions similaires

  1. erreur de segmentation fault
    Par barbarello dans le forum wxWidgets
    Réponses: 1
    Dernier message: 23/11/2008, 20h06
  2. Erreur de "Segmentation fault"
    Par tripleaix dans le forum x86 32-bits / 64-bits
    Réponses: 0
    Dernier message: 31/10/2008, 10h29
  3. Réponses: 2
    Dernier message: 08/04/2007, 17h23
  4. [erreur] Segmentation fault
    Par fveysseire dans le forum C
    Réponses: 11
    Dernier message: 15/06/2006, 14h44
  5. [ERREUR D'EXECUTION] Segmentation Fault
    Par CestPasMoi dans le forum C++
    Réponses: 3
    Dernier message: 26/11/2005, 17h38

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