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 :

[debutant]Problème d'alocation dynamique.


Sujet :

C++

  1. #1
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut [debutant]Problème d'alocation dynamique.
    Bonjour.

    Suite à la lecture d'un tutoriel j'ai voulu essayer le code d'entraînement l'allocation dynamique suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    long* memoireAllouee = NULL;
     
        memoireAllouee = malloc(sizeof(long));
    malheureusement, il refuse le long* et n'accepte qu'un void* pour memoireAllouee avec le message d'erreur suivant (compilation):
    d:\dossiers & prog\programation\c\c++\init\tutodynaloc\tutodynaloc\main.cpp(15) : error C2440: '=' : impossible de convertir de 'void *' en 'int *'
    La conversion de 'void*' en pointeur vers non 'void' nécessite un cast explicite
    j'ai trouvé qu'il fallait mettre un (int*) devant le malloc pour résoudre le problème... je me demandais si c'était normal, si c'était du à une option ou au compilateur, et quel avantage, dans ces derniers cas apportaient le cast dynamique ....

    merci.

  2. #2
    Membre expérimenté Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Par défaut
    En C++ on utilise new plutôt. malloc c'est du C.

  3. #3
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    En fait oui, en C++, il y a new. Avec new, il y a appel au constructeur tandis qu'avec malloc il n'y a pas d'appel au constructeur (donc tes objets ne sont pas initilisés), pour des raisons de performances, on peut vouloir passer par malloc mais mieux vaut utiliser new.

    Pour ton problème de retour de malloc, il y a une différence entre le malloc du C++ et celui du C. En C, tu n'as pas besoin de caster le retour tandis qu'en C++ tu es obligé.

  4. #4
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Merci beaucoup, mais que fait le new exactement ?

    je n'ai pas tres bien compris désolé

    encore merci.

  5. #5
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Citation Envoyé par méphistopheles
    Merci beaucoup, mais que fait le new exactement ?
    Citation Envoyé par PRomu@ld
    Avec new, il y a appel au constructeur tandis qu'avec malloc il n'y a pas d'appel au constructeur

  6. #6
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Je m'excuse de mon imprécision, je veut dire dans le code posté par Twindruff:sinon, je dois avouer que je ne sait pas ce qu'est qu'un appel au constructeur...

    Merci

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    As-tu commencé par lire un bon cours de C++ ? On a tout ce qu'il faut sur http://c.developpez.com/cours

    PS : ce que tu lis est un tutoriel de C.

  8. #8
    Membre éclairé

    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    Citation Envoyé par PRomu@ld
    Pour ton problème de retour de malloc, il y a une différence entre le malloc du C++ et celui du C. En C, tu n'as pas besoin de caster le retour tandis qu'en C++ tu es obligé.
    C'est n'est pas une histoire de malloc, mais bien plus généralement une histoire de cast. Il n'y a pas de cast implicite Void* -> T* en C++ comme il y a en C.

    J'imagine que vous le savez, mais pas les débutants qui pouraient comprendre de travers.

  9. #9
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    à vrai dire, j'avais aussi regardé les tutoriels de DVP,... mais ceux de C !
    en effet, j'étais, surement comme beaucoup d'autre incultes, convaincu qu'il fallait conaitre le C avant de pouvoir utiliser le C++.

    en plus, le tutoriel que j'utilise est bien intitulé "tutoriel C/C++"... c'est trompeur...

    bon, ben je crois que je vais m'y mettre alors...

    merci

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Citation Envoyé par méphistopheles
    en effet, j'étais, surement comme beaucoup d'autre incultes, convaincu qu'il fallait conaitre le C avant de pouvoir utiliser le C++.
    Une fois que tu as compris que ce sont deux langages différents et ce qui diffère entre les deux, c'est bon.

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Par défaut
    Si tu veux apprendre le C++, ne passe par le C, ce n'est pas nécessaire et risque de te faire prendre de mauvaises habitudes.
    Commence par du vrai C++ procédural, et passe ensuite à l'objet.

  12. #12
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Citation Envoyé par nikko34
    Une fois que tu as compris que ce sont deux langages différents et ce qui diffère entre les deux, c'est bon.
    quelles sonts les différences fondamentales (si elles peuvent être citée rapidement...)?

    sinon, lequel des tutoriel magistraux est le plus adapté ? (sachant que j'ai les bases du C(enfin, jusqu'à l'alocation dynamique ) et que j'ai déja fait de la POO via VB6...) ?


    merci

  13. #13
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Les différences ? Il y a en tellement... A commencer par la gestion de la mémoire. Et pour finir la gestion des erreurs. Et au milieu tous les grands classiques relatifs à la généricité, la SL, l'orientation objet, ...

    Un tuto ?
    Tu lis l'anglais technique ? Tu es prêt à investir ? Ou alors tu as du temps ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  14. #14
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Salut,

    Si tu lis l'anglais, et que tu as les moyens d'investir dans un livre: "Accelerated C++" chez Addison Wesley est sans hésitez l'ouvrage qu'il te faut! En ce qui concerne les tutoriels gratuits, je n'en ai jamais rencontré qui enseignent les idiomes C++ avant de se perdre dans les détails bas nivau du C. Si quelqu'un en connait un, je suis preneur pour le lien. A part cela, "Thinking in C++" de Bruce Eckel est gratuit, peut être téléchargé sur le web. C'est un excellent ouvrage et la connaissance requise en C est bien mesurée. Je recommande cette lecture.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  15. #15
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Merci

    En fait, pour le tutoriel, je voulais dire, parmi ceux que propose developpez.com, à moins qu'ils soient si inadaptés que ça ...

Discussions similaires

  1. [debutant]Problèmes
    Par BibiGmi dans le forum OpenGL
    Réponses: 2
    Dernier message: 05/03/2004, 14h00
  2. problèmes de textes dynamique dynamiquement générés
    Par stephane eyskens dans le forum Flash
    Réponses: 18
    Dernier message: 05/09/2003, 13h13
  3. Réponses: 23
    Dernier message: 21/08/2003, 07h16
  4. [Debutant] Problème du linker [Dev-c++4]
    Par Macdir dans le forum Dev-C++
    Réponses: 3
    Dernier message: 30/05/2003, 20h50
  5. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07

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