[C++] erreur du au delete[]

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
dans mon programme, j'utilise une variable allouer dynamiquement. le problème viens du fait que le prog plante au niveau de la destruction de cette variable. Je n'ai pas l'habitude d'utilise l'allocation dynmique alors vous pourrez me dire d'où viens le pb.
int main()
    {
      double *tc;
      tc=new double[taille];
      /* modification diverse et varier de tc*/
      printf("avant delete');
      delete[] tc;
      printf("apres delete[]");
     return 0;
}


Au final, le programme tourne bien, m'affiche avant et fait une erreur de segmentation...
Merci de votre aide.
A voir également:

5 réponses

crabs Messages postés 908 Date d'inscription   Statut Membre Dernière intervention   507
 
Salut
Quelle version de compilateur, Système d'exploitation ?
Est-ce que la variable taille est bien affectée ?
Sous Linux (slackware 10.1) avec gcc 3.3.4, libc 2.3.4 et noyau 2.4.29
pas de bug...
A+, crabs
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
gcc 3.2 sur XP.
Il n'y a pas de problème avec taille, elle ser à dimensionner des vectors qui sont tout à fait correct. Mais je vais quand même chercher de ce coté la.
merci.
0
Nashouille
 
En général un seg fault sur un delete signifie que tu essaies de désallouer une variable déjà désalouée.
Dans tes modification du tc tu es sur de na pas la supprimer en essyant de supprimer une copie par exemple?
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Merci pour la réponse, je vais chercher de ce coté. Mais je n'ai rien vu de tel qu'une destruction de copie. Dans les modif de tc, je fait surtout tc[i]
La destruction de tc pourrai elle avoir lieu dans une fonction?
Sinon, j'ai résolu le problème en rajoutant la ligne suivante devant le delete :

tc=0;(ou tc=NULL)

quand je fait le delete ensuite il n'y a plus de plantage.
En revanche il semble qu'il y ai une fuite de mémoire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
juste pour préciser. En fait l'ajoue de cette ligne ne résoud pas completement le problème : le programme après quelques boucles, mais son plantage n'est pas signaler par Windows.
0