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 :

problème avec un new[]


Sujet :

C++

  1. #21
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Cela sent la corruption de mémoire sans rapport avec la ligne que tu nous montres.

    De sûr j'ai repéré un problème lié aux copies que tu n'as pas interdites. Après, les vecteurs m'entretiennent trop dans ma fainéantise pour que je regarde plus précisément le code (gérant mal la mémoire ; et à 100 lieues d'un ECM) d'un autre à une heure pareille.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 199
    Par défaut
    C'est justement parce que je galère avec mon code que je poste, sachant qu'il y a sur ce forum des gens bien plus qualifié. Pourrais-tu m'éclairer sur les copies non interdites? Qu'est-ce qu'un ECM?

  3. #23
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Exemple
    Complet -> compile et reproduit le problème observé
    Minimal -> rien de superflu (beaucoup de superflu dans l'extrait que tu as donnée -- pas celui avec juste le new, qui était tout sauf complet)

    Deux avantages aux ECM:
    - On est plus susceptibles de regarder -- ce que tu décris sent à plein nez la corruption qui fait tout planter 5 minutes après (/500 lignes de codes après...) ; cherchez pas ailleurs avec vos try-catch, il y a largement assez de mémoire pour charger une image ; ceci dit il y a une superbe fuite dans ta fonction de remplissage
    - Trouver l'ECM permet à celui dans le besoin de comprendre et voir à partir de quel moment cela ne va plus, et de réfléchir au pourquoi. Bref, à progresser.

    Et en toute honnêteté (et je suis surpris qu'après deux pages je sois le premier à t'y pousser ; j'ai manqué un message?), les vecteurs sont tes amis. Surtout pour gérer des tableaux dynamiques. Tu y gagneras en robustesse, maintenabilité, cachets d'aspirine consommés, ...
    NB: les vecteurs ne dispensent pas plus tard d'apprendre à manipuler correctement la mémoire -- pour au final retourner vers les vecteurs ou toute autre solution RAII adaptée au problème (-> FAQ!)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 199
    Par défaut
    Ok pour les vecteurs mais mon tableau est en fait un tableau de sommets destinés à être envoyés à glDrawElement qui réclame un pointeur vers un tableau de vertices. Sinon j'avoue que j'ai beau y regarder de plus près je ne vois pas la belle fuite memoire dans ma fonction de remplissage

  5. #25
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Tu peux vraisemblablement passer &vect[0].

  6. #26
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    La fuite de mémoire est au niveau de ton new.
    L'allocaton n'étant pas dans le constructeur, j'en déduis que la fonction peut être appellée plusieurs fois. Au deuxième appel, cela fuira. A moins qu'il y ait une fonction de libération. De toutes façon, pour corriger ton problème, il faut revoir/reprendre l'intégralité des cycles de vie (éventuellement multiples) de tes zones de mémoires allouées dynamiquement.

    Si j'ai d'autres conseils à donner:
    - que Buffer ait l'entière responsabilité de ses membres => interdiction à l'extérieur de modifier quoique ce soit -- cf encapsulation, couplage, ...
    - nbr_mesh porte mal son nom (vu qu'il contient le nombre - 1)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. [XL-2007] Problème avec un New Excel.Workbook
    Par Riri80 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/01/2011, 15h14
  2. problème avec byte b1 = new byte();
    Par psycho_xn dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 08/12/2009, 08h35
  3. Problème avec un trigger et la valeur ":NEW."
    Par cedrich dans le forum SQL
    Réponses: 8
    Dernier message: 11/02/2009, 17h13
  4. Problème avec new
    Par Azharis dans le forum C++
    Réponses: 18
    Dernier message: 27/04/2005, 17h45

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