Posez votre question Signaler

Erreur memcpy()

romanzo_cirminale - Dernière réponse le 21 oct. 2009 à 23:04
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++
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.
Lire la suite 

Erreur memcpy() »

Suggestions
3 réponses
Réponse
+0
moins plus
Toujours la même histoire avec les 'segment fault', un coup ça marche, un coup ça marche pas !
Il y a 99 % de chances pour que l'espace précédemment alloué ne soit pas suffisant lors de la recopie.
Peut-être aussi un problème 16-32-64 bits si le programme n'a pas été écrit de manière standard ?
Bonne continuation.
romanzo_cirminale - 21 oct. 2009 à 19:39
Hey merci de ta reponse,

normalement pas de probleme j'ai compile mon programme en 32 bits et mon serveur utilise un 32 bits.
Apres comment savoir si l'espace alloue est suffisant ou non?
loupius - 21 oct. 2009 à 23:04
Eh bien, juste avant le 'memcpy', il suffit d'afficher la taille de l'espace alloué et la taille nécessaire pour la recopie. De toute façon, il y a un problème d'allocation d'espace mémoire. Si il est avéré que l'erreur ne vient pas de là,, il faudra rechercher si les allocations mémoires déjà réalisées sont correctes car la conséquence d'une mauvaise allocation n'est pas toujours (et on pourrait dire n'est pas souvent) immédiate.
Bonne continuation.
Ajouter un commentaire
Ce document intitulé « Erreur memcpy() » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook