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

Delphi Discussion :

Où allouer la mémoire dans une dll Delphi appelée depuis un programme C


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 17
    Points : 15
    Points
    15
    Par défaut Où allouer la mémoire dans une dll Delphi appelée depuis un programme C
    Bonjour,

    j'ai un petit soucis concernant l'allocation mémoire dans une dll écrite en Delphi. En effet, cette dll est appelée depuis un programme C dont je ne maîtrise pas le code.

    En paramètre de la fonction est passée une variable chaîne (PChar) remplie dans la dll qui doit être lue dans le programme appelant.

    Ma question est : où doit être allouée la zone mémoire de cette variable ; dans le programme C appelant ou dans la dll?

    Ayant lu quelques commentaires sur la question, j'ai cru comprendre qu'il fallait le faire dans le programme appelant vu que la mémoire n'est pas partagée entre les 2. Mais j'aimerai une confirmation de votre part...

    Merci d'avance

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    en effet j'ai lu cet article et il est marqué :

    Il n'est pas question de laisser la DLL allouer un buffer de la bonne taille, car c'est à l'application que doit appartenir la gestion de sa propre mémoire.
    mais je voulais une confirmation sur ce point puisqu'on me soutient que c'est à la dll d'allouer et de libérer la mémoire des paramètres qu'elle reçoit...

    Merci

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    non, c'est bien a l'appelant de determiner la place dont il a besoin

    en regle generale cela ce fait souvent en deux fois
    le premier appel donne la taille à allouer
    et le second donne l'info dans la place alloué par l'appelant

    par contre si l'utilisation de ton pchar ne se fait quand interne alors c'est à ta dll d'allouer et desallouer la place disponible

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Merci pour ce complément de réponse. Cette variable n'est pas seulement utilisée en interne, donc l'appelant doit l'allouer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Désallocation mémoire dans une Dll
    Par alyma dans le forum C
    Réponses: 3
    Dernier message: 14/05/2013, 14h57
  2. event dans une dll delphi a recuperer dans un autre langage
    Par titou640 dans le forum API, COM et SDKs
    Réponses: 12
    Dernier message: 30/09/2011, 12h05
  3. Réponses: 2
    Dernier message: 05/09/2008, 11h18
  4. Réponses: 4
    Dernier message: 11/04/2007, 12h49
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 10h15

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