Stack, Free store, Heap etc
Quelques questions, pour ma culture générale....
Suite à la lecture d'un post sur ce forum, et de cette doc :
http://www.gotw.ca/gotw/009.htm
J'aimerais comprendre comment ça se passe vis-a-vis du code que l'on tape :
Code:
1 2 3 4 5 6 7 8 9
| int uneFonction(int parametre)
{
int variable;
// variable est allouée dans la "stack" ?
variable = parametre * 2;
return variable;
} |
Code:
1 2 3 4 5 6 7 8 9
| cClasse* uneFonction()
{
cClasse* pointeur;
pointeur = new cClasse();
// l'instance de cClasse est allouée dans le Free Store ou dans le Heap ?
return pointeur;
} |
Dans un fichier .h, si on définit une variable "globale" :
Code:
1 2 3
|
int entierGlobal = 5;
// l'int est alloué dans le Global/Static ? |
Dans un fichier .h, si on définit un pointeur "global" :
Code:
1 2 3 4
|
cClasse* pClasse = new cClasse();
// le pointeur pClasse est alloué dans le Global/Static
// et l'instance de la classe est alloué dans le Free Store ou dans le Heap ? |
Enfin, est-ce le fait d'acceder successivement à des données allouées dans des segment différents à un rapport avec :
- le nombre "d'erreur de cache" (quand le processeur doit recharger le cache parceque les données n'y sont pas déjà)
- le nombre de "page fault" ("erreur" du meme genre, je crois) que l'on peut observer dans le gestionnaire des taches de windows
Merci de m'éclairer !