Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1020 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C/C++] Vérifier un pointeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++] Vérifier un pointeur

n°882493
xterminhat​e
Si vis pacem, para bellum.
Posté le 25-10-2004 à 21:16:39  profilanswer
 

Je souhaiterais vérifier qu'une variable pointeur pointe effectivement vers un espace mémoire accessible par mon programme.


---------------
Cordialement, Xterm-in'Hate...
mood
Publicité
Posté le 25-10-2004 à 21:16:39  profilanswer
 

n°882519
Lam's
Profil: bas.
Posté le 25-10-2004 à 21:35:21  profilanswer
 

C'est bizarre comme question. Il sort d'où ton pointeur ?
 
Sous Visual C++, tu as AfxIsValidAddress (encore que je ne suis pas sûr que ça passe sous Win XP SP2). Sous unix, il doit y avoir quelques API qui vont bien.  
 
Mais c'est plutôt rare comme besoin (et pas très cathodique)...

n°882520
cris56
Posté le 25-10-2004 à 21:37:34  profilanswer
 

oui, c'est quoi le but ?

n°882521
xterminhat​e
Si vis pacem, para bellum.
Posté le 25-10-2004 à 21:38:22  profilanswer
 

D'accord, voici le contexte : je realise un programme en c++ dont l'api est ecrite en C pour un besoin de compatibilité. Certaines fonctions appelées par l'utilisateur sont du genre :

Code :
  1. read( char* buf, int buflen ); // lecture d'une donnée par l'utlisateur.


Avant de copier dans buf des données, je souhaiterais vérifier que le pointeur ait été correctement aloué par l'utilisateur.


Message édité par xterminhate le 25-10-2004 à 21:39:03

---------------
Cordialement, Xterm-in'Hate...
n°882526
cris56
Posté le 25-10-2004 à 21:41:08  profilanswer
 

oui, mais
 

xterminhate a écrit :

Je souhaiterais vérifier qu'une variable pointeur pointe effectivement vers un espace mémoire accessible par mon programme.


 
cest suffisant comme test ?


Message édité par cris56 le 25-10-2004 à 21:41:46
n°882529
xterminhat​e
Si vis pacem, para bellum.
Posté le 25-10-2004 à 21:43:30  profilanswer
 

Il resterait à vérifier la taille de la mémoire allouée. Ce serait la cerise sur le g...


---------------
Cordialement, Xterm-in'Hate...
n°882532
cris56
Posté le 25-10-2004 à 21:45:23  profilanswer
 

mais un pointeur ne pointe pas forcement sur une zone allouée sur le tas ?

n°882533
xterminhat​e
Si vis pacem, para bellum.
Posté le 25-10-2004 à 21:46:17  profilanswer
 

oui et ?


---------------
Cordialement, Xterm-in'Hate...
n°882536
cris56
Posté le 25-10-2004 à 21:47:26  profilanswer
 

ben je sais pas moi (suis pas un pro)
 
int n;
int *p = &n;  
...
 
edit : je pose juste la question


Message édité par cris56 le 25-10-2004 à 21:48:24
n°882539
xterminhat​e
Si vis pacem, para bellum.
Posté le 25-10-2004 à 21:49:31  profilanswer
 

Si je poursuis ton exemple...

Code :
  1. read( p, 1 );


...me convient parfaitement. p pointe sur une espace mémoire accessible.


---------------
Cordialement, Xterm-in'Hate...
mood
Publicité
Posté le 25-10-2004 à 21:49:31  profilanswer
 

n°882540
Lam's
Profil: bas.
Posté le 25-10-2004 à 21:49:37  profilanswer
 

Je pense qu'il veut dire qu'une fonction système qui teste la validité d'un pointeur ne peut pas se baser uniquement sur les "logs" de malloc et de free, puisque l'utilisateur peut vouloir écrire dans sa pile, ou même dans un segment de code.
 
C'est d'ailleurs la différence entre AfxIsMemoryBlock et AfxIsValidAddress sous VC++.

n°882542
cris56
Posté le 25-10-2004 à 21:52:48  profilanswer
 

voila c'est ca  :)
 
xterminhate > faudrais que le pointeur pointe la ou il doit pointer, généraliser ca à tout l'espace memoire adressable par le  programme, ca te rassure vraiment ?

n°882543
xterminhat​e
Si vis pacem, para bellum.
Posté le 25-10-2004 à 21:52:50  profilanswer
 

Est-il possible de récuprer les adresses de debut et de fin de la zone mémoire associée à un process ?


---------------
Cordialement, Xterm-in'Hate...
n°882545
Lam's
Profil: bas.
Posté le 25-10-2004 à 21:54:43  profilanswer
 

Sous quel système, avec quel compilo ?  
 
(de toutes façons, la réponse sera non a priori ;) ).

n°882549
xterminhat​e
Si vis pacem, para bellum.
Posté le 25-10-2004 à 21:59:02  profilanswer
 

Finallement, je vais laisser à l'utilisatuer le soin de gérer ses mauvaises allocations...
 
Bien merci quand même ! :-)


---------------
Cordialement, Xterm-in'Hate...
n°882685
HelloWorld
Salut tout le monde!
Posté le 26-10-2004 à 00:06:43  profilanswer
 

Pour infos, sous Win32 tu as les fonctions IsBadCodePtr / IsBadReadPtr / IsBadStringPtr / IsBadWritePtr


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°882743
Taz
bisounours-codeur
Posté le 26-10-2004 à 02:58:45  profilanswer
 

moi je dirais que c'est pas ton problème de faire ce genre de vérification... et t'es pas sorti de l'auberge, ça peut pointer dans des tas d'espaces mémoire différents, parfois même readonly ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C/C++] Vérifier un pointeur

 

Sujets relatifs
[C] [ résolu]pbm pointeur et tableau de structuresSoucis de pointeur ('fin je pense)
verifier une saisie clavier en shell unixverifier si un lecteur réseau existe
Vérifier la date de création | Créer une fonctionPointeur de fonction en paramètre
[C++] Appel à une méthode récupérée par pointeurVérifier l'existance d'un fichier xls en VB
Verifier si un mot est en majusculesTas, pile et pointeur
Plus de sujets relatifs à : [C/C++] Vérifier un pointeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR