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 :

Question sur la fonction malloc et free


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    925
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 925
    Par défaut Question sur la fonction malloc et free
    Bonjour,

    Est t'il propre d'utiliser la fonction new ou malloc et puis utiliser free ou delete
    du même pointer allouer à partir d'un thread différent ?

    Merci

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Sans entrer dans les détails malloc(); et free();, c'est en C. new et delete c'est en C++.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 477
    Par défaut
    Bonjour,

    Citation Envoyé par yann458 Voir le message
    Est t'il propre d'utiliser la fonction new ou malloc et puis utiliser free ou delete du même pointer allouer à partir d'un thread différent ? Merci
    Ce que dis gérald3d est important : si tu programmes en C, tu dois te cantonner à malloc() et free() exclusivement. Si tu programmes en C++, tu ne devrais utiliser que new et delete, même s'il est techniquement possible d'appeler les fonctions C.

    Ensuite, tu peux effectivement allouer une zone mémoire depuis un thread et la libérer depuis un autre, à conditions que ceux-ci partagent le même espace mémoire (ce qui n'est pas toujours le cas). En pratique, si les deux threads peuvent exploiter les données pointées par un même pointeur sans erreur, tu dois pouvoir libérer l'espace de la même façon.

    Par contre, évidemment, tu ne peux libérer avec free() un espace alloué avec new ni, avec delete(), un espace alloué avec malloc(). Ce sont deux jeux de fonctions distincts.

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    925
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 925
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Bonjour,



    Ce que dis gérald3d est important : si tu programmes en C, tu dois te cantonner à malloc() et free() exclusivement. Si tu programmes en C++, tu ne devrais utiliser que new et delete, même s'il est techniquement possible d'appeler les fonctions C.

    Ensuite, tu peux effectivement allouer une zone mémoire depuis un thread et la libérer depuis un autre, à conditions que ceux-ci partagent le même espace mémoire (ce qui n'est pas toujours le cas). En pratique, si les deux threads peuvent exploiter les données pointées par un même pointeur sans erreur, tu dois pouvoir libérer l'espace de la même façon.

    Par contre, évidemment, tu ne peux libérer avec free() un espace alloué avec new ni, avec delete(), un espace alloué avec malloc(). Ce sont deux jeux de fonctions distincts.
    Juste pour savoir :
    Dans quel cas , le thread ne partage pas la même adresse de mémoire ?

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Avec pthread par défaut les threads partagent le même espace mémoire mais tu peux ajouter des options (cf man)

    http://man.developpez.com/man3/pthre..._init.3thr.php

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

Discussions similaires

  1. [Dates] Question sur les fonctions Date
    Par cerede2000 dans le forum Langage
    Réponses: 2
    Dernier message: 28/10/2006, 17h26
  2. Question sur la fonction recv
    Par Mr_Chut dans le forum Réseau
    Réponses: 14
    Dernier message: 15/09/2006, 12h43
  3. Question sur les fonctions "send()" et "recv(
    Par damien99 dans le forum MFC
    Réponses: 6
    Dernier message: 10/02/2006, 20h47
  4. Réponses: 1
    Dernier message: 08/02/2006, 11h18
  5. Réponses: 2
    Dernier message: 21/12/2005, 09h39

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