begin process at 2012 05 28 21:50:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

System

 > 

Comment traiter l'erreur d'un pointeur foireux ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment traiter l'erreur d'un pointeur foireux ?

dimanche 16 mars 2008 à 23:50:06 | Comment traiter l'erreur d'un pointeur foireux ?

Booster

Membre Club
Bonsoir à tous,

Alors voilà j'ai une fonction comme suit :

bool Fonction (void * ptr, int tailleptr){
    char message[2000];
    memcpy(message , ptr , tailleptr); //tailleptr < 2000
}
(J'ai isolé le contexte)

Le problème est que cette fonction peut recevoir un pointeur non null et non initialisé :( donc du cou je vais taper dans des zones mémoires illicite et j'ai de beaux messages d'erreur :  "memory could not be read..." (Au moment de faire le memcpy())

Comment puis-je traiter cette erreur ? Sachant que le ptr n'est pas null mais n'est pas lisible non plus !?

Merci d'avance de vos réponses !


lundi 17 mars 2008 à 01:48:48 | Re : Comment traiter l'erreur d'un pointeur foireux ?

Neo_Fr

Membre Club
Salut,
Tu peux utiliser IsBadWritePtr:
http://msdn2.microsoft.com/en-us/library/aa366716(VS.85).aspx

Neo_Fr
lundi 17 mars 2008 à 03:52:49 | Re : Comment traiter l'erreur d'un pointeur foireux ?

SAKingdom

Membre Club
Ce n'est pas le droit en écriture qu'il faut vérifier mais le droit en lecture. IsBadReadPtr.

Très important de considérer l'avertissement de MSDN au sujet de ces fonctions.

C++ (@++)

lundi 17 mars 2008 à 10:36:57 | Re : Comment traiter l'erreur d'un pointeur foireux ?

luhtor

Comment est-ce possible de récupérer un pointeur non nul non intialisé ? un pointeur non initialisé doit être mis à NULL.
lundi 17 mars 2008 à 10:52:01 | Re : Comment traiter l'erreur d'un pointeur foireux ?

Booster

Membre Club
Merci Neo_fr et SAKingdom d'après la MSDN c'est presque pile poil pour mon cas mais malheureusement cela ne marche pas :( snif.

Pour luhtor c'est possible dans le cas où je ne gère en aucun cas l'appelle de ma fonction, c'est windows en quelque sorte qui appelle ma fonction du cou il me passe ce qu'il veut et dans mon cas tout marche ou presque puisque ma fonction est appellée une 15ène de fois et il me passe en paramètre quelque chose du style :

Fonction( 0x0012A430,4);
Fonction( 0x0012A2F8,16);
Fonction( 0x0012A328,16);
....
Fonction(0x71A57980,16);  << Addresse foireuse qui  me plante l'ittérallement l'application.

Si quelqu'un d'autre à une idée ? (sans comparer les pointeurs if (addr!=0x0012) { //Error } ) :D

Merci d'avance ;)

lundi 17 mars 2008 à 10:59:28 | Re : Comment traiter l'erreur d'un pointeur foireux ?

Booster

Membre Club
Quand je dis que cela ne marche pas en réaliter il me dit qu'il arrive à lire l'adresse... (IsBadReadPtr return false) et pourtant c'est bien une mauvaise adresse !
lundi 17 mars 2008 à 12:11:54 | Re : Comment traiter l'erreur d'un pointeur foireux ?

Booster

Membre Club
Sinon avec un try catch n'y à t'il pas possibilité de traiter cette erreur ?

J'ai essayé ceci :

bool Fonction (void * ptr, int tailleptr){
    try{
        char message[2000];
        memcpy(message , ptr , tailleptr); //tailleptr < 2000
    }catch(...){
        return false;
    }
}

Mais sans succés, me suis-je trompé ? Ou est ce normal que ceci ne marche pas ?

Merci d'avance !


lundi 17 mars 2008 à 13:42:49 | Re : Comment traiter l'erreur d'un pointeur foireux ?

Booster

Membre Club
C'est si impossible que ça ? :(
lundi 17 mars 2008 à 13:42:49 | Re : Comment traiter l'erreur d'un pointeur foireux ?

Booster

Membre Club
C'est si impossible que ça ? :(
lundi 17 mars 2008 à 15:22:43 | Re : Comment traiter l'erreur d'un pointeur foireux ?

Neo_Fr

Membre Club
Tu peux pas poster un peu plus de code?
sinon on trouvera jamais..

Neo_Fr

1 2

Cette discussion est classée dans : fonction, erreur, traiter, ptr, pointeur


Répondre à ce message

Sujets en rapport avec ce message

Au secour ! [ par slashparof ] Au secour! Je ne comprend vraiment pas le problème visual studio me compile cette fonction correctement, mais mon programme cause une erreur quand j'a Problème de pointeur [ par sebastienbro ] Bonjour,G une fonction ki a comme argument un pointeur vers un struct personnalisé.J'aimerais savoir commen je peu faire pour modifier lé éléments de Pointeur sur fonction envoyé par dll [ par MoDDiB ] Voila ce que j'ai fais mais ca ne marche pas :Dll :#include BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){ retu erreur de conception? [ par frdestroyers27 ] Salut a tous!ca serait pour savoir si je fait une erreur de conception!j'ai un fichier main.cpp avec la fonction WinMain dedans qui contient juste un Pointeur vers une fonction dans une classe ... [ par MoDDiB ] Supposons que j'ai la fonctionvoid Fonction(int test,int t);appartenant a la classe Cclass.Quelle est la syntaxe pour creer un pointeur vers cette fon shellexecute et mfc [ par dambeaufort ] bonjour,je developpe actuellement une application sous mfc.dans cette application, j'ai besoin de d'ouvrir et de lancer des fichier. Pour se faire j'u question sur les pointeur et tableau et matrice [ par Battousai ] bonjour a tous,ma question se porte comme indiqué si dessus sur l'utilisation des pointeur avec les tableau et surtout les matrices ou plus.d'abord j' Afficher une DialogBox [ par Gabi ] Donc, j,essai d'afficher une DialogBox juste après que ma fenêtre soit affichée. Mais ça ne marche pas. Aucune erreur de compilation, ni aucune erreur variable membre non static dans une fonction membre static [ par adrod ] J'ai une erreur du compilateur: Error C2597. Je suis allé sur msdn pour avoir plus de précision et ils me disent:To access the nonstatic member, you m pb pointeurs [ par Arnaud16022 ] bonsoirj'ai un peu de mal avec les pointeurs et ma fonction marche pas trop.Le but est de passer une variable en parametre a une fonction, qui va stoc


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales