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