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 :

Libérer la mémoire tableau dynamique provenant d'une DLL Delphi


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Par défaut Libérer la mémoire tableau dynamique provenant d'une DLL Delphi
    Bonjour,
    Je récupère un tableau Dynamic d’objets d’une DLL réalisé en Delphi. Ce tableau est déclaré en Delphi dans SYSDYN.H :
    Cette unité est un modèle fournissant un support de tableau dynamique de style Delphi en C ++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef System::DynamicArray

    Aucun problème pour récupérer les données de ce tableau, l’afficher, mais il génère une erreur lorsque je tente de libérer la mémoire par un set_length(0);

    tableau Dynamic d’objets = TAllPlaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TAllPlaces places;
     
    	places = fnPlaces(Language, Name);
    L'erreur est ici dans l'unité SYSDYN.H

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Free chunk of memory
          // NOTE: Don't use delete []p_i to be compatible with Delphi's memory manager
          System::FreeMemory(pc);
    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Quelle erreur génère-t-il?
    As-tu essayé de faire tourner ton programme dans le debugger de ton EDI?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Par défaut
    Il génère un "Access violation" quand il exécute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System::FreeMemory(pc);
    Oui je débuge jusque entrer dans l'unité SYSDYN.H

    Il entre dans cette procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      DynamicArray<T>::set_length(DynArrInt l)
    Dans cette procédure, il attribue les nouvelles données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Assign new data...
        SetData(p);
    Et il fini par génèrer un "Access violation" ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System::FreeMemory(pc);
    Ce que je ne saisi pas pour le moment, c'est que j'ai cette érreur dans mon projet global développé sur un système 64 bits et non sur un petit projet test que j'ai effectué sur une machine 32 bits !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Si ça fonctionne sur ton projet test c'est que tu fais une manip incorrecte, type déplacement du pointeur ou double release dans le projet réel. Et il y a peu de chance qu'on soit capable de t'assister en quoi que ce soit sur ça..
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 503
    Par défaut
    La Dll Delphi, elle est 32bits ou 64bits ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/07/2014, 12h08
  2. Remplir un tableau dynamique 2D dans une fonction
    Par lmanceau dans le forum C++
    Réponses: 5
    Dernier message: 27/06/2011, 13h57
  3. tableau dynamique provenant d'une structure
    Par VenomX dans le forum C
    Réponses: 4
    Dernier message: 17/07/2007, 10h47
  4. [Tableaux] Tableau dynamique issue d'une requete
    Par JmL40 dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2007, 20h37
  5. Réponses: 4
    Dernier message: 01/06/2006, 15h55

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