Allocation mémoire

Résolu
cs_cogno Messages postés 26 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 12 décembre 2009 - 6 déc. 2009 à 18:57
memspell Messages postés 4 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 23 janvier 2010 - 22 janv. 2010 à 00:17
Bonjour à tous.

Je me posais les deux questions suivantes:

1/ Quand on parle de la pile et du tas, c'est un espace mémoire alloué dans la RAM?
2/ Si j'exécute un programme que j'ai développé sur un PC, et que ce PC a disons 512 Mo de mémoire vive. Si dans mon programme j'alloue (avec "new") disons 600 Mo d'espace pour un pointeur, que se passe-t-il?

Ca peut sembler bête comme questions, mais c'est vrai que je traine ca depuis un pti moment maintenant, donc si on pouvait m'aider

Merci

5 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
6 déc. 2009 à 20:26
Ce sont de très bonnes questions.

1) Il y a déjà eu des discussions dessus très intéressante. En voici les liens:
http://www.developpez.net/forums/d5097/c-cpp/cpp/differences-stack-heap/
qui parlent de:
http://www.gotw.ca/gotw/009.htm

2) Si tu n'as plus d'espace pour un programme, celui-ci ne peut plus allouer. S'il tente d'allouer de la mémoire, le système refuse.
Par exemple: Un malloc peut échouer (et renvoyer NULL), s'il ne peut allouer par manque de place.
Tu as ici des informations intéressantes sur la manière dont réagit malloc, et sa limite maximale d'allocation:
http://en.wikipedia.org/wiki/Malloc
3
cs_cogno Messages postés 26 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 12 décembre 2009
6 déc. 2009 à 20:41
Merci CptPingu,

mais ma premiere question n'est pas à quoi servent Stack et Heap, mais juste savoir de où la mémoire est prise, à la RAM?

Merci pour la deuxième réponse, j'avais oublié le pointeur null arf!
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
6 déc. 2009 à 20:45
Oui, oui, tout est dans la RAM.
Renseigne toi aussi, si ça t'intéresse, sur la mémoire physique et virtuelle.
3
cs_cogno Messages postés 26 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 12 décembre 2009
6 déc. 2009 à 20:49
Merci Mister Pingu
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
memspell Messages postés 4 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 23 janvier 2010
Modifié par cptpingu le 28/11/2013 à 18:26
Hello,

C'est une bonne question, lorsqu'un process se charge en mémoire il execute ses instructions d'initialisation dont la creation de la stack qui est un espace alloué dynamiquement dans la mémoire dédiée au process.
La taille de la stack est limitée et elle est en tout point semblable à la mémoire alloué dans le heap à la différence que celui-ci n'as pour limite que la quantité de mémoire disponible.

Cédric
0
Rejoignez-nous