Bonsoir,
j'ai un probl�me qui me prend la t�te, je vous le soumets en esp�rant que vos cerveaux seront mieux �quip�s que le mien...
voil�, j'ai une structure dans laquelle j'ai un objet path :
1 2 3 4 5
| typedef struct fichiers
{
boost::filesystem::path path;
/* ... */
} fichier; |
et j'ai la fonction suivante :
1 2 3 4 5 6 7
| fichier * push(const boost::filesystem::path& _path)
{
fichier *f = (fichier*)malloc(sizeof(fichier));
if(!f) exit(1); // Si l'allocation a échoué
f->path = _path;
return f;
} |
Cette fonction est appel�e plusieurs fois, et � un certain moment (alors que le path semble valide, je peux l'afficher avec std::cout), �a plante � l'ex�cution sur �a :
Erreur de segmentation (core dumped)
A noter deux choses quand m�me :
1) le r�pertoire sur lequel �a bloque ne change pas d'une fois sur l'autre
2) en revanche, lorsque je modifie la fonction et que je lui passe en argument le path au format std::string, puis que je fais
f->path = boost::filesystem::path(_path);
alors l�, �a plante quelques r�pertoires plus loin, et l'erreur est la suivante :
*** glibc detected *** ./Affichage: free(): invalid pointer: 0x080d647c ***
======= Backtrace: =========
/* ici la trace */
======= Memory map: ========
/* les infos m�moire */
Abandon (core dumped)
Et l� je ne vois pas le pourquoi du comment... Quelqu'un a une id�e de ce que j'ai mal fait ?
Merci d'avance !!
Partager