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 :

Connaitre la taille d'un tableau


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 79
    Points : 43
    Points
    43
    Par défaut Connaitre la taille d'un tableau
    Bonjour,

    j'ai codé une fonction avec un tableau en argument et j'ai mis un argument pour connaitre la taille du tableau, car on ne peut connaitre la taille d'un tableau en C++.

    Pourtant, lorsqu'on désalloue un tableau, on fait juste un "delete []". Le gestionnaire de mémoire doit donc bien connaitre la taille du tableau, non?!? Si oui, pourquoi pas moi?!?

    Merci pour vos réponses!

  2. #2
    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 : 61
    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
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par nonozor Voir le message
    Pourtant, lorsqu'on désalloue un tableau, on fait juste un "delete []". Le gestionnaire de mémoire doit donc bien connaitre la taille du tableau, non?!?
    Oui
    Citation Envoyé par nonozor Voir le message
    Si oui, pourquoi pas moi?!?
    Probablement parce que c'est pas :
    • beau
    • portable
    • ton problème


    C'est la mécanique interne du new et du delete
    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
    .

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    Effectivement, c'est une des limites imposées par l'héritage du C, on ne peut pas connaitre la taille d'un tableau pour lequel la mémoire a été allouée dynamiquement...

    Cela n'empêche que le programme ait lui-même acces à cette information lorsque delete[] est invoqué

    Mais c'est aussi la raison qui fait que l'on préfère généralement se tourner vers les solutions propres au C++ plutôt que vers les solutions issues du C.

    Les solutions propres au C++ passent par l'utilisation des conteneurs de la STL (dont la classe vector, disponible dans l'espace de noms std par inclusion du fichier d'en-tête <vector>, représente la possibilité de gérer des éléments contigus en mémoire), qui sont plus faciles et plus sécurisantes à l'emploi que tout ce que tu pourrais faire de similaire par toi même
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    OK.
    merci pour les infos!

  5. #5
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Si le tableau est alloué statiquement,on peut récupérer la taille à l'execution (sans constante globale, la retrouver), sinon, s'il est alloué dynamiquement, ce n'est pas possible
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

Discussions similaires

  1. [Tableaux] Comment connaitre la taille d'un tableau?
    Par Polaire76 dans le forum Langage
    Réponses: 2
    Dernier message: 21/11/2005, 17h34
  2. Connaitre la taille d'un tableau
    Par Natim dans le forum C++
    Réponses: 17
    Dernier message: 10/10/2005, 17h53
  3. Connaitre la taille d'un tableau dynamique
    Par lewellah dans le forum C
    Réponses: 2
    Dernier message: 23/09/2005, 18h37
  4. Connaitre la taille d'un tableau dyn
    Par seal3 dans le forum C++
    Réponses: 13
    Dernier message: 24/08/2005, 20h25
  5. [Tableau]comment connaitre la taille d'un tableau à 2 dimensions
    Par Kyti dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/04/2005, 10h27

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