Savoir si un buffer est alloué

Messages postés
246
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
5 août 2004
- - Dernière réponse : sebastienbro
Messages postés
246
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
5 août 2004
- 21 déc. 2003 à 21:42
Bonjour,

Je voudrais savoir comment je pourrais déterminer si un buffer est déjà allouée, pour pouvoir par exemple, l'allouer.

Merci d'avance

Bye

\* -- Seb [[mailto:seb_winux@hotmail.com Mail]] [Web] -- */
Afficher la suite 

7 réponses

Messages postés
246
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
5 août 2004
0
Merci
J'ai oublié quelque chose aussi :

je voudrais savoir, s'il a été allouée, l'espace mémoire allouée, pour éviter les buffer overflow ou les erreurs.

Merci

bye

\* -- Seb [[mailto:seb_winux@hotmail.com Mail]] [Web] -- */
Commenter la réponse de sebastienbro
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
BYTE *pmem = 0;
if(pmem) EST ALLOUE

Si tu n'as pas de taille fixe d'allocation, tu mets dans des variables pour retrouver ensuite.
BruNews, ciao...
Commenter la réponse de BruNews
Messages postés
246
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
5 août 2004
0
Merci
D'accord merci beaucoup, mais en fait, c'est pour une dll, donc imaginons que celui qui passe le buffer l'alloue de 10, et passe comme variable 100, comment je peux éviter que tout plante (c'est pour des chaines)

Bye

\* -- Seb [[mailto:seb_winux@hotmail.com Mail]] [Web] -- */
Commenter la réponse de sebastienbro
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
Regarde comment fait l'api Windows, quand elle demande un buffer, il y a aussi le parametre lenbuffer.
Tu imites.
BruNews, ciao...
Commenter la réponse de BruNews
Messages postés
246
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
5 août 2004
0
Merci
Oui je l'ai déjà fait, mais imaginons que le buffer est été allouée de 10 :

char *var;

var = (char *) malloc(10);

et que le paramètre lenbuffer passé soit 100.

Comment détecter cette erreur ?

\* -- Seb [[mailto:seb_winux@hotmail.com Mail]] [Web] -- */
Commenter la réponse de sebastienbro
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
En ce cas on plante et c'est normal, une fonction exportee par une DLL l'est generalement pour des developpeurs que l'on presume responsables.
BruNews, ciao...
Commenter la réponse de BruNews
Messages postés
246
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
5 août 2004
0
Merci
Très merci, je voulais juste savoir si c'était possible d'éviter ça!

Merci beaucoup, et désolé de t'avoir fait perdre ton temps!

Bye !

\* -- Seb [[mailto:seb_winux@hotmail.com Mail]] [Web] -- */
Commenter la réponse de sebastienbro