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
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
Bonjour,
https://stackoverflow.com/questions/...747499#1747499 pourrait répondre à ta question
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.
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 ...)
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
Salut,
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
Partager