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 :

Taille des classes, question � 0,01�


Sujet :

C++

  1. #1
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut Taille des classes, question � 0,01�
    Pourquoi la taille d'une classe entierement vide (je sais, cela ne sert pas � grand chose) est de 1 octet.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    class MaClasse { }; // classe vide
    int size = sizeof(MaClasse);  // size = 1
    Environnement : Visual studio 2005 SP1 sous Windows XP SP3
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  2. #2
    Membre �clair�
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Philippines

    Informations professionnelles :
    Activit� : Consultant informatique
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Par d�faut
    Pour que ce code:

    cr�e un tableau qu'on peut parcourir?

  3. #3
    yan
    yan est d�connect�
    R�dacteur
    Avatar de yan
    Homme Profil pro
    Ing�nieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur expert
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par d�faut
    Citation Envoy� par ram_0000 Voir le message
    Pourquoi la taille d'une classe entierement vide (je sais, cela ne sert pas � grand chose) est de 1 octet.
    Peut �tre par ce qu'il lui faut bien un peu de mati�re pour exister

    Par exemple si tu fait
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    vector<MaClasse> myVect;
    myVect.resize(100);
    myVect devra bien allouer quelque chose sinon il te pourra pas fonctionner.

    Tout comme
    si Maclass valais z�ro on aurais
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     C_mat ==  C_mat +1 ==  C_mat+99

  4. #4
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par anykeyh Voir le message
    Pour que ce code:

    cr�e un tableau qu'on peut parcourir?
    C'est une r�ponse possible effectivement (0,01� par ch�que ?)
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre �clair�
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Philippines

    Informations professionnelles :
    Activit� : Consultant informatique
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Par d�faut
    Alors on partage avec Mongaulois

  6. #6
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par anykeyh Voir le message
    Alors on partage avec Mongaulois
    Non non, "Vae Victis" (malheur aux vaincus)
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  7. #7
    yan
    yan est d�connect�
    R�dacteur
    Avatar de yan
    Homme Profil pro
    Ing�nieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur expert
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par d�faut
    Citation Envoy� par ram_0000 Voir le message
    Non non, "Vae Victis" (malheur aux vaincus)
    battue de si peut
    A moins que je triche (en effa�ant ton message)

  8. #8
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Ces jours-ci, il y a une discussion sur fr.comp.lang.c++ qui parle de �a entre autres... :
    http://groups.google.com/group/fr.co...745fd60e?hl=fr

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    Par contre, il me semble que �a ne rajoute pas de taille en cas d'h�ritage:
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Base
    {
    protected:
       Base() { std::cout << "Hello!" << std::endl; }
       Base(const Base &) { std::cout << "HelloHello!" << std::endl; }
       Base& operator= (const Base&) { std::cout << "Hello=!" << std::endl; return *this; }
       ~Base() { std::cout << "bye!" << std::endl; }
    };
     
    class Derivee : public Base
    {
    public:
       int value;
    };
    Sachant qu'il n'y a pas de fonction virtuelle, sizeof(Derivee) devrait �tre �gal � sizeof(int) non?

    Edit: D'apr�s ce code que j'ai rajout� derri�re, oui (sous Visual).
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    #define COMPILE_TIME_ASSERT(name, expr) typedef char COMPILE_TIME_ASSERT_ ## name[ (expr) ? 1 : -1 ]
     
    COMPILE_TIME_ASSERT(SIZEOF_BASE, sizeof(Base)==1);
    COMPILE_TIME_ASSERT(SIZEOF_DERIVEE, (sizeof(Derivee)==sizeof(int)));
    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.

  10. #10
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    C'est l'empty base class optimization. Certains compilateurs ne la font pas.

  11. #11
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

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

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Pour info, il est pr�vu qu'en C++0x cette empty base class optimisation soit rendue obligatoire dans certains cas (standard layout), ce qui facilitera la r�flexion sur ce sujet, et assure des bonnes performances.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 21/05/2009, 12h31
  2. question sur la d�claration des classes
    Par nina08 dans le forum Qt
    R�ponses: 2
    Dernier message: 06/07/2008, 12h43
  3. R�ponses: 11
    Dernier message: 06/03/2007, 19h18
  4. taille des 'pages' et autres questions
    Par Equus dans le forum D�buter
    R�ponses: 2
    Dernier message: 04/03/2005, 09h50
  5. R�ponses: 7
    Dernier message: 28/09/2004, 14h27

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