Taille d'une zone mémoire en C

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.

ElectricFence fonctionne sous Solaris 8. Comme t’as les sources, regarde comment ca marche…

Grumly je me leve et je PROTESTE energiquement !

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 !

void *MyMalloc(size_t size)
{
  void allocatedBuffer = malloc(size + sizeof(void ));
  if (!allocatedBuffer)
  {
  return NULL;
  }

  // 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 :stuck_out_tongue:

Hope it helps :stuck_out_tongue:

C’est marrant, dans ton truc la, la taille du buffer est a -1 du pointer…
Enfin je dis ca, je dis rien

mais c’est vrais que vu comme ca : ca me semble plus vraisemblable !

Oui c0unt0, exactement, sauf que mon système le GARANTIT, lui Comme Darty ! et toc :stuck_out_tongue:

undefined

Freddy avait sans doute un truc super interessant a dire, mais glopnuke a frappe !

5ug4r 3d1t
Ce message a été édité par c0unt0 le 24/06/2004

[quote]Freddy avait sans doute un truc super interessant a dire, mais glopnuke a frappe ![/quote]Non non non firefox/mozilla a frappe.

[quote]Non non non firefox/mozilla a frappe[/quote]Moi utilisateur bete et mechant.
Moi blamer devellopeur
Moi pas comprendre “Interaction entre joli-ciels”

Ooops

raaaah !!!
encore un post, encore un undefined

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.

Ce message a été édité par Freddy le 24/06/2004