IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres éditeurs Discussion :

Analyseur code pour dépassement mémoire


Sujet :

Autres éditeurs

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Analyseur code pour dépassement mémoire
    Bonjour à tous,

    j'utilise Splint pour analyser mon code C et je souhaite que le résultat de l'analyse me dise les failles de gestion mémoire du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int *pointeur;
    pointeur = malloc(10*sizeof(int));
    pointeur[15] = 3;
    free(pointeur);
    Comme on le sait, ce code passe à la compilation mais provoque des erreurs à l'exécution. C'est pourquoi le mieux est de le détecter avant.

    Splint me dit bien qu'il y a une possibilité que pointeur soit NULL, là impécable, je suis d'accords, il faut donc ajouter un if(!NULL) avant d'utiliser le pointeur.

    Mais ce que je veux c'est qu'il m'indique que la ligne pointeur[15] = 3; provoque un déppassement, comme il le fait si j'utilise des tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int tableau[10];
    tableau[15] = 3;
    dans cet exemple, Splint m'indique bien qu'il y a dépassement car 15 est plus grand que 10-1.

    J'ai essayé avec des commandes Splint du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int *pointeur;
    pointeur = malloc(10*sizeof(int));
    /*@requires maxSet(pointeur) == 10-1@*/
    pointeur[15] = 3;
    free(pointeur);
    mais Splint ne semble pas comprendre ce que je lui dis.

    Quelqu'un à t'il une idée de comment faire ?
    Est-ce possible ?
    Existe-t-il un analyseur statique qui sache le faire ?

  2. #2
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Salut
    J'ai entendu le plus grand bien de : http://valgrind.org/
    Pe dmalloc aussi mais surtout valgrind

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Ces outils on vraiment l'air sympa quoiqu'il me sempble que ce soit des analyseurs dynamique (pour dmalloc en tout cas)... et je recherche un analyseur statique (mais ton info est super intéressante tout de même).
    Et puis... je bosse sous windows, je recherche donc un outils existant ou porté sous Win32.

    Cependant, je pense que la detection de bug mémoire comme dans mon exemple est possible avec Splint... mais commment

    merci pour tes infos !

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/08/2009, 10h59
  2. Réponses: 11
    Dernier message: 03/05/2009, 17h52
  3. [Lomboz] Génération de code pour EJB
    Par paikan dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/07/2003, 14h28
  4. Réponses: 2
    Dernier message: 01/04/2003, 22h09
  5. code pour interbase 6.0 et 6.5 de generateur
    Par tripper.dim dans le forum InterBase
    Réponses: 4
    Dernier message: 01/07/2002, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo