C++ Academy · Leçon

Allocation sur la pile

Comprendre le fonctionnement du stockage automatique

Leçon 1 sur 413 étapes

Allocation sur la pile est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.

Stockage automatique

Les variables locales résident dans le stockage automatique, couramment appelé la pile. Elles sont créées lorsque l’exécution entre dans leur portée et détruites lorsqu’elle en sort.

#include <iostream>

int main() {
    int x = 42;          // on the stack
    double pi = 3.14;    // on the stack
    std::cout << x << " " << pi << "\n";
}

La pile grandit et rétrécit

Chaque appel de fonction empile un cadre de pile qui contient ses variables locales. Lorsque la fonction retourne, le cadre est retiré et les variables locales disparaissent : aucun nettoyage manuel n’est nécessaire.

#include <iostream>

void greet() {
    int local = 7;          // pushed on call
    std::cout << local << "\n";
}                            // popped on return

int main() { greet(); }

Ordre LIFO

La pile fonctionne selon le principe dernier entré, premier sorti. La variable locale créée le plus récemment est la première à être détruite lorsque la portée prend fin.

#include <iostream>

int main() {
    int a = 1;
    {
        int b = 2;   // created after a
        std::cout << b << "\n";
    }                // b destroyed first
    std::cout << a << "\n";
}

Rapide et économique

L’allocation sur la pile est extrêmement rapide : elle déplace simplement le pointeur de pile. Il n’est pas nécessaire de rechercher de la mémoire libre ni d’effectuer la gestion administrative requise par le tas.

La portée détermine la durée de vie

Un objet de la pile n’existe que dans le bloc où il est déclaré. Les blocs imbriqués possèdent leur propre portée.

#include <iostream>

int main() {
    for (int i = 0; i < 3; ++i) {
        int square = i * i;   // recreated each iteration
        std::cout << square << "\n";
    }
}

Taille limitée

La pile possède une taille fixe et limitée, souvent de quelques mégaoctets. Allouer de très grands tableaux sur la pile peut provoquer un plantage par débordement de pile.

// Risky: a large fixed array on the stack
int big[1000000];   // may overflow the stack

Retourner une adresse de la pile est une erreur

Ne retournez jamais un pointeur ou une référence vers une variable locale. Une fois la fonction retournée, cette zone de stockage n’existe plus et le pointeur devient pendant.

int* bad() {
    int local = 5;
    return &local;   // BUG: local dies here
}

Transmettre les objets volumineux par référence

Copier de gros objets sur la pile est coûteux. Transmettez-les par const& pour éviter la copie tout en limitant l'utilisation de la pile.

#include <string>

void print(const std::string& s) {  // no copy
    // use s
}

Les objets de la pile ne nécessitent pas delete

Comme le compilateur gère automatiquement leur durée de vie, vous ne devez jamais appeler delete sur une variable de la pile.

#include <iostream>

int main() {
    int n = 10;
    // delete &n;   // ERROR: not heap-allocated
    std::cout << n << "\n";
}

Tableaux sur la pile

Les tableaux de taille fixe et de longueur connue résident sur la pile et sont libérés automatiquement à la fin de la portée.

#include <iostream>

int main() {
    int values[3] = {10, 20, 30};
    for (int v : values) std::cout << v << "\n";
}

Quand préférer la pile

Préférez la pile pour les petits objets à courte durée de vie dont la taille est connue lors de la compilation. Elle est plus rapide et se nettoie automatiquement : ne recourez au tas que lorsque vous en avez réellement besoin.

Vérification rapide

Testez votre compréhension de l'allocation sur la pile.

Récapitulatif

Vous avez appris que l'allocation sur la pile utilise un stockage automatique lié à la portée : les variables sont créées à l'entrée et détruites à la sortie, selon l'ordre LIFO. Elle est rapide, se nettoie automatiquement et sa taille est limitée. Ne renvoyez jamais les adresses de variables locales et n'utilisez jamais delete sur des objets de la pile.

Gratuit pour commencer

Apprends C++ avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
51
Leçons
203

Questions Fréquemment Posées

La leçon « Allocation sur la pile » est-elle gratuite ?

Oui — le texte complet de « Allocation sur la pile » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Allocation sur la pile » ?

Comprendre le fonctionnement du stockage automatique Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C++ Academy ?

Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Allocation sur la pile » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?

Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Allocation sur la pile
  2. Allocation sur le tas avec new/delete
  3. Durée de vie des objets
  4. Bugs courants de mémoire
← Retour à C++ Academy