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

C Discussion :

Stratégie de gestion des erreurs malloc


Sujet :

C

  1. #1
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut Stratégie de gestion des erreurs malloc
    Bonjour,

    Je suis amené à reprendre un peu de code C fait par un chercheur. Je suis un peu intrigué car ce code (enfin une librairie en fait) utilise beaucoup de malloc et se contente en cas d'échec de cette fonction de faire un simple affichage de texte à la console et de quitter.

    D'un côté j'aimerai avoir quelque chose d'un peu plus solide, mais vu qu'on n'a pas d'exceptions en C, ça me paraît un énorme travail de tout refactorer pour pouvoir remonter une erreur entre les appels jusqu'au sommet de la façade de la librairie. En plus de cela je me dis que le code appelant ne saura pas trop quoi faire de cette erreur.

    Donc je me pose vraiment la question si je dois utiliser une sorte de fonction my_malloc perso qui affiche un petit mot et laisse couler, ou carrément laisser arriver un segfault en me disant que c'est suffisamment exceptionnel pour être ignoré. Même si ça me pose le problème que vu que le code est en quelque sorte une librairie, je déciderai en fait de laisser tomber ou mettre fin à un processus qui m'utilise alors que ça devrait pas être à moi de décider de ça.

    J'avoue je sais pas trop quoi faire car je connais pas suffisamment bien l'état de l'art dans ce langage.
    Si vous avez des conseils à me donner sur la gestion des OOM ou me dire comment vous vous y prenez dans vos projets (enfin à condition que vous soyez sur de vrais projets de production), je serai ravi.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 545
    Points : 1 429
    Points
    1 429
    Par défaut
    Salut,

    Si tu ne peux pas connaitre la taille mémoire nécessaire a l’exécution à la compilation et, si ton programme est bien fait cad:
    -pas de fuite mémoire
    -Uniquement la mémoire nécessaire est allouée.

    Et que le malloc échoue, c'est que le système n'a pas assez de mémoire pour pouvoir exécuter le programme.

    Tu n'y peux rien. Afficher un message d'erreur et rejeter la faute sur l'utilisateur est la seule chose à faire.

Discussions similaires

  1. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  2. [struts][Datasource]Gestion des erreurs
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/09/2004, 16h51
  3. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

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