Heap est utilisé pour stocker des variables dynamiques. C'est une zone de mémoire de processus. malloc(), calloc(), resize() toutes ces fonctions intégrées sont couramment utilisées pour stocker des variables dynamiques.
Quand un débordement de tas se produit -
A) Si nous allouons une variable dynamique à grand nombre -
int main() { float *ptr = (int *)malloc(sizeof(float)*1000000.0)); }
B) Si nous allouons de la mémoire en continu et ne la libérons pas après utilisation.
int main() { for (int i=0; i<100000000000; i++) { int *p = (int *)malloc(sizeof(int)); } }
La pile est une structure de données dernier entré, premier sorti. Il est utilisé pour stocker les variables locales utilisées dans les fonctions. Les paramètres sont transmis via cette fonction et son adresse de retour.
Si le programme consomme plus d'espace mémoire, un débordement de pile se produira en raison de la taille limitée de la pile dans la mémoire de l'ordinateur.
Un débordement de pile se produit lorsque-
C) Si une fonction est appelée de manière récursive par elle-même un nombre infini de fois, alors la pile ne pourra pas stocker un grand nombre de variables locales, donc un débordement de pile se produit-
void calculate(int a) { if (a== 0) return; a = 6; calculate(a); } int main() { int a = 5; calculate(a); }
D) Si un grand nombre de variables locales sont déclarées ou de grandes dimensions sont déclarées. Tableau ou matrice, peut provoquer un débordement de pile.
int main() { A[20000][20000] }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!