Visualiseur mémoire
Heap vs Stack
Naviguez ligne par ligne et observez exactement ce qui se passe en mémoire — en C et en Python en parallèle.
← → pour naviguer entre les étapes
1
Entrée dans main()
Un frame est créé sur la stack pour main(). La stack grandit vers les adresses basses.
gestion manuelle
C— cliquez sur les étapes pour naviguer
1int main() {2 int x = 42;3 float y = 3.14;4 char c = 'A';5 return 0;6}
📚
Stack
automatique · LIFO · taille fixe
main()▶ en cours
aucune variable
🗄️
Heap
manuel (C) · GC (Python) · taille dynamique
vide
Récapitulatif
| Stack 📚 | Heap 🗄️ | |
|---|---|---|
| Allocation | automatique (entrée de scope) | malloc() / new / Box::new() |
| Libération | automatique (sortie de scope) | free() obligatoire en C |
| En Python | refs de 8B + frame objects (heap!) | tous les objets Python |
| Taille | connue à la compilation | dynamique, inconnue |
| Vitesse | très rapide (déplace 1 pointeur) | lent (syscall brk/mmap) |
| Limite | ≈ 8 Mo (stack overflow) | RAM disponible (plusieurs Go) |
| Durée de vie | scope lexical de la variable | jusqu'à free() / drop() / GC |
| Erreurs C | — (automatique) | double free, dangling, leak |