Gestion de la mémoire : allocation de frame
L'allocation sur le frame prend son nom de « frame de pile » configuré chaque fois qu'une fonction est appelée.Le frame de pile est une zone de mémoire qui contient temporairement les arguments de la fonction ainsi que les variables qui sont des variables locales définies dans la fonction.Les variables de vue sont souvent appelées variables automatique « » parce que le compilateur attribue automatiquement l'espace pour elles.
Il existe deux principales fonctionnalités des allocations de frame.En premier lieu, lorsque vous définissez une variable locale, suffisamment d'espace est alloué sur le frame de pile pour maintenir la variable entière, même s'il s'agit d'un grand tableau ou structure de données.Ensuite, des variables frame sont automatiquement supprimées lorsqu'elles sont hors de portée :
void MyFunction()
{
// Local object created on the stack
CString strName;
// Object goes out of scope and is deleted as function ends
}
Pour les variables de fonction locale, cette transition de portée se produit lorsque la fonction s'arrête, mais la portée d'une variable frame peut être plus petite que une fonction si des accolades imbriquées est utilisée.Cet effacement automatique des variables frame est très important.Dans le cas de les types primitifs simples (par exemple int ou byte), les tableaux, ou les structures de données, l'effacement automatique libère simplement la mémoire utilisée par la variable.Étant donné que la variable est sortie de la portée, il est impossible d'y accéder de toute manière.Dans le cas de les objets C++, cependant, le processus de l'effacement automatique est un peu plus complexe.
Lorsqu'un objet est défini comme variable frame, son constructeur est appelé automatiquement au point où la définition est produite.Lorsque l'objet est hors de portée, le destructeur est appelé automatiquement avant que la mémoire à l'objet ne soit récupérée.Ces construction et suppression automatiques peuvent être très pratiques, mais vous devez tenir compte des appels automatiques, surtout au destructeur.
Le principal avantage d'allouer des objets sur le frame est qu'ils sont automatiquement supprimés.Lorsque vous allouez vos objets sur le frame, vous n'avez pas à vous préoccuper sur les objets oubliés ce qui provoque des fuites de mémoire.(Pour plus d'informations sur les fuites de mémoire, consultez l'article Détection des fuites de mémoire dans MFC.) Un inconvénient d'allocation de frame est que les variables frame ne peuvent pas être utilisées en dehors de leur portée.Un autre facteur en choisissant l'allocation de frame et l'allocation de tas est celui pour les grandes structures et les objets, il est souvent préférable d'utiliser le tas au lieu de la pile pour le stockage dans la mesure où l'espace de pile est souvent limitée.