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 :

Comment obtenir la taille restante de la pile ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 45
    Par défaut Comment obtenir la taille restante de la pile ?
    Bonjour,

    J'utilise Visual C++.
    Je voudrais savoir s'il est possible de connaitre la taille restante (ou la taille occupée) de la pile des variables locales ?

    Merci de votre aide

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    https://stackoverflow.com/questions/...747499#1747499 pourrait répondre à ta question

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    Pour quoi ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 45
    Par défaut
    Merci beaucoup.
    La granularité du résultat n'est pas très fin ... mais ça me suffit pour ce dont j'ai besoin.

    J'ai besoin de cette info pour du débug. Je suis en train d'essayer de faire une classe de chaine de caractères, avec surcharge de l'opérateur "new", et je veux m'assurer que la mémoire est bien prise dans la pile et non dans le tas.
    (... mais j'ai un peu de mal à faire ce que je veux !!! Je viendrai peut-être poster une autre question dans ce forum si je n'y arrive pas ...)

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 260
    Par défaut
    JE fais pas de C++, mais comme new fait des allocations mémoires, ça doit plutôt aller dans le tas non ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,
    Citation Envoyé par chrtophe Voir le message
    JE fais pas de C++, mais comme new fait des allocations mémoires, ça doit plutôt aller dans le tas non ?
    En fait, new (new[])est un opérateur (une fonction) que l'on peut surcharger pour faire ce que l'on appelle du placement new.

    L"idée de la technique est que l'on peut prévoir -- par exemple au début du programme -- une "certaine quantité" de mémoire dans laquelle nous irons "piocher" en cas de besoin et dans laquelle nous placerons toutes les données que nous voudrions créer (y compris des données de taille dynamique).

    Cela permet -- entre autres -- d'éviter les appels systèmes induits par new, car les appels systèmes font partie des instructions les plus lentes que l'on trouve (et des instructions qui ont le plus de chances d'échouer )

    Si bien que, ne théorie, tu as raison (new alloue de la mémoire sur le tas, en théorie), mais, en pratique, tu as tort: new peut prendre la mémoire exactement là où tu le souhaites

    D'ailleurs, c'est bien simple : le dernier paramètre template de la plupart des collections de la STL (ainsi que de std::basic_string) représente l'allocateur: le système qui permet d'obtenir de la mémoire supplémentaire au besoin.

    Par défaut, cet allocateur utilise le new classique, mais il est tout à fait possible de fournir un "pool de mémoire" dans lequel aller piocher ce dont on a besoin

    Cependant, je serais surpris de savoir pourquoi @genetin souhaite que son implémentation d'une chaine de caractères prenne sa mémoire sur la pile, car il faut dire ce qui est : cet espace est particulièrement limité, et que leur mise sur la pile pose de sérieux problème, entre autres, lorsqu'il est question de renvoyer une chaine de caractères à la fin de la fonction
    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

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/11/2007, 10h10
  2. Comment obtenir la taille du mon disque dur ?
    Par samerkouta dans le forum Débuter
    Réponses: 4
    Dernier message: 04/11/2007, 12h25
  3. Comment obtenir la taille d'un fichier?
    Par Bruno29 dans le forum Flash
    Réponses: 3
    Dernier message: 16/01/2007, 20h05
  4. Réponses: 8
    Dernier message: 13/06/2005, 13h48

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