[C++] erreur du au delete[]

Fermé
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 15 sept. 2005 à 17:37
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 16 sept. 2005 à 14:57
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 lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
15 sept. 2005 à 17:56
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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
15 sept. 2005 à 18:14
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
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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 sept. 2005 à 12:28
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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 sept. 2005 à 14:57
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