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

Fortran Discussion :

deallocate un pointer ?


Sujet :

Fortran

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 131
    Points
    131
    Par défaut deallocate un pointer ?
    bonjour à tous,

    je me retrouve à devoir travailler sur un code, qui est une poubelle à mon avis, même si la personne qui l'a écrit a fait un bel effort. le code a dû être écrit en 77 initialement, mais il a été mis à jour pour du 90, principalement pour l'allocation de mémoire (mais il y a encore de nombreux pointeurs et je soupçonne des confondaisons entre les deux).

    sous compaq v6.6 windows, ça compile et ça exécute. sous linux j'ai une segfault. j'ai lancé gdb et remonté les erreurs. j'arive sur une ligne qui tente de deallocate un pointer.

    d'où ma question : est-ce légal ?

    si oui, je chercherai une autre source d'erreur, sinon, j'aurai ptête besoin de vous

    adrien

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Oui c'est légal. Mais ça ne veut pas dire que c'est légal dans ton contexte. On peut désassocier un pointeur et on peut déallouer un pointeur. Dans le premier cas, c'est la liaison entre le pointeur et la mémoire pointée qui est coupé. Dans le deuxième cas, c'est la mémoire pointée qui est libérée. En général, tu peux déallouer un pointeur s'il a été alloué et tu peux désassocier un pointeur qui a été associé.

    Un Segmentation fault, c'est un problème d'adressage de mémoire. Si c'est produit par un deallocate() de pointeur, c'est possiblement que le pointeur n'a pas été alloué, ou que tu deallocate 2 fois, ou que le pointeur est associé à un bloc de mémoire alloué statiquement, ou que la mémoire est corrompue...

Discussions similaires

  1. [RTTI] TObject.FieldAdress(Name : String) : Pointer
    Par Clorish dans le forum Langage
    Réponses: 3
    Dernier message: 30/09/2004, 14h41
  2. Pointer sur un fichier FILE *
    Par Biou Pink Powa dans le forum C
    Réponses: 3
    Dernier message: 29/01/2004, 14h45
  3. templates et smart pointers
    Par delire8 dans le forum C++
    Réponses: 9
    Dernier message: 10/07/2003, 16h26
  4. Réponses: 5
    Dernier message: 05/07/2003, 11h52
  5. [Pointer]Treeview.Data
    Par rbag dans le forum Composants VCL
    Réponses: 7
    Dernier message: 31/08/2002, 01h44

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