Allocation sur la pile
Comprendre le fonctionnement du stockage automatique
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 stackRetourner 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.
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
- Allocation sur la pile
- Allocation sur le tas avec new/delete
- Durée de vie des objets
- Bugs courants de mémoire