Sommaire

Rappels fondamentaux quant à la structure de la mémoire

1. Introduction

Même si les différentes modalités d’allocation mémoire sont rappelées quand il est nécessaire au cours de l’ouvrage, il est sans doute utile de rappeler en préambule les grands concepts tels que :

  • la pile d’appels

  • le tas

En effet, ces deux éléments relatifs à la mémoire sont fondamentaux pour comprendre comment la mémoire est allouée en langage C#.

2. La pile

La pile d’appel est de largeur 32 bits ou 64 bits, voire 128 bits selon la machine sur laquelle vous vous trouvez. Quand on parle d’un ordinateur 64 bits, cela signifie aussi que la pile de l’ordinateur est de largeur 64 bits c’est-à-dire 8 octets de largeur.

Ainsi un entier int32 codé sur 32 bits ne prendrait que la moitié d’un emplacement de la pile.

Une variable locale, c’est-à-dire définie localement dans une méthode ou dans une fonction, est forcément définie sur la pile. C’est le cas de l’entier dans l’exemple suivant.

namespace ConsoleAppPile  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Int32 a = 3;  
            Int32 b = 2;  
            Int32 c = 3 + 2;  
     ...