Petit complément :
Je travaille sur SOLARIS 8. Je fais ça pour le boulot donc pas de purify ou insure malheureusement. Surtout que comme je l’ai dis précédement je ne dispose pas de l’intégralité des sources donc ce genre de logiciel me serait inutile pour tester cette partie de code.
Enfin pour le mot précédent l’adresse de mon pointeur ben c’est pas ça domage d’ailleurs ça m’aurait bien arrangé…
Donc si vous avez des suggestions même les plus bizare je suis preneur.
Si le problème avait été énoncé clairement dès le début, la solution aurait été tellement évidente que vous auriez tous HONTE de préconiser de tels hacks !
Voila une solution portable et simple à mettre en oeuvre, et qui n’est pas un hack :
il suffit de remplacer les fonctions malloc et free (ce que fait déjà notre ami), et de « tricher » avec !
// Stock la taille du buffer alloué au début du nouveau buffer
*((unsigned int *) allocatedBuffer) = size;
// Ici tu rajoute ton bloc mémoire dans ta liste machin
// chose pour pouvoir tracker
// Renvoie APRES l’endroit où on a stocké la taille
return ((unsigned int *) allocatedBuffer) + 1;
}
void free(void *buffer)
{
if (!buffer)
{
return;
}
unsigned int *size = ((unsigned int *) allocatedBuffer) - 1;
// ICI tu fais ce que tu veux
free(size);
}
Bon c’est pas du VRAI code, je viens de l’écrire en live alors ça doit pas compiler, et puis bon utiliser « unsigned int * » comme type de pointer c’est pas super top pour tout ce qui est 64bits & co m’enfin bon l’idée est la. Le principe c’est donc d’allouer plus que demandé, et de stocker la taille au début du buffer (cad à un endroit où on saura le retrouver au moment du free) et le tour est joué.
Simple, propre, relativement portable Et paf Grumly
[quote]Non non non firefox/mozilla a frappe[/quote]Moi utilisateur bete et mechant.
Moi blamer devellopeur
Moi pas comprendre “Interaction entre joli-ciels”
ca se produit quand exactement, j’ai la flemme de rechercher
re-tappage de ce que j’ai re-dis deja 5 fois (4 undefined ce matin, un tout de suite) :
J’avais lu le thread le matin, repondu le soir sans le relire, donc l’association “qui a dit quoi” je ne m’en souvenais plus.
Et meme si vous avez apporte des reponses, ce que j’ai dis a propos de la connaissance du fonctionnement de malloc reste valide, d’ailleurs je n’avais cite que le post initial.