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 :

utilisation de delete


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    52
    D�tails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Par d�faut utilisation de delete
    Bonjour

    Je possede une variable static d�fini ainsi dans le .h:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    private:
    	static CMemBuffer* listPreBuffer[3000];
    et initialis� comme �a au d�but du .cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    CMemBuffer* CMemBuffer::listPreBuffer[3000];
    Dans une de mes m�thode, j'ai l'instruction suivante:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    for (i = 0; i < MAXBUFFER; i ++)
    	listPreBuffer[i] = new CMemBuffer(1000000);
    Et une fois que que j'ai utilis� ce dont j'avais besoin, je fais un
    Le compilateur me donne l'avertissement C4154 : deletion of an array expression; conversion to pointer supplied
    Si j'ex�cute malgr� tout mon programme, l'espace m�moire n'est pas lib�r�.

    Pouvez-vous me dire quel est mon probl�me ?

    Je vous remercie par avance

  2. #2
    Membre confirm� Avatar de zabibof
    Inscrit en
    F�vrier 2007
    Messages
    188
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2007
    Messages : 188
    Par d�faut
    Ce ne serait pas plut�t comme ceci?
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    for(i = 0; i < MAXBUFFER; ++i)
    	delete listPreBuffer[i];

  3. #3
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    Pourquoi n'utilises-tu pas un vecteur ?

    L�, si ton syst�me arrive � court de m�moire en cours de boucle, il y a des chances que ton ex�cution n'arrive jamais � ton instruction delete[], et tu auras alors des fuites de m�moire.

  4. #4
    R�dacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supa�ro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Ing Supa�ro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par d�faut
    Citation Envoy� par oodini Voir le message
    Pourquoi n'utilises-tu pas un vecteur ?

    L�, si ton syst�me arrive � court de m�moire en cours de boucle, il y a des chances que ton ex�cution n'arrive jamais � ton instruction delete[], et tu auras alors des fuites de m�moire.
    S'il n'y a plus de m�moire pour l'allocation, c'est plus le syst�me en entier qui risque de planter � la place de l'application.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une tr�s bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Tout d�pend du co�t de la construction de l'objet...

  6. #6
    Membre �m�rite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par d�faut
    +1 pour l'utilisation de vector.
    Mais bon, �a c'est de mani�re g�n�rale quand on parle de tableau, ici il y a un autre d�tail que je n'aime pas : tu stockes des pointeurs, donc tu dois forc�ment parcourir ton vector pour faire des delete dessus. Et �a, comme tout ce qui touche � la destruction des objets, �a devrait �tre g�r� par RAII (exception safety powaaa!).

    Les solutions sont multiples:
    - utiliser un vector de shared_ptr
    - utiliser un boost::ptr_vector
    - mettre le vector dans un objet qui va g�rer correctement son cycle de vie

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. utilisation de delete - Arbre Binaire
    Par azman0101 dans le forum D�buter
    R�ponses: 1
    Dernier message: 09/01/2011, 17h02
  2. Risque de l'utilisation de cascade delete
    Par Lucas Panny dans le forum SQL
    R�ponses: 13
    Dernier message: 02/10/2008, 15h59
  3. utilisation de delete
    Par patmar83 dans le forum Requ�tes et SQL.
    R�ponses: 2
    Dernier message: 23/06/2008, 22h29
  4. comment utiliser delete * ?
    Par stphmrt dans le forum DB2
    R�ponses: 2
    Dernier message: 02/06/2008, 10h14
  5. R�ponses: 14
    Dernier message: 02/10/2007, 12h21

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