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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !