The heap is used to store dynamic variables. It is an area of process memory. malloc(), calloc(), resize() all these built-in functions are commonly used to store dynamic variables.
When heap overflow occurs -
A) If we allocate dynamic large number variable -
int main() { float *ptr = (int *)malloc(sizeof(float)*1000000.0)); }
B) If we allocate memory continuously and do not release it after use.
int main() { for (int i=0; i<100000000000; i++) { int *p = (int *)malloc(sizeof(int)); } }
The stack is a last-in-first-out data structure. It is used to store local variables used inside functions. Parameters are passed through this function and its return address.
If a program consumes more memory space, a stack overflow will occur due to the limited stack size in the computer's memory.
Stack overflow occurs when-
C) If a function is called recursively by itself an infinite number of times, then the stack will not be able to store a large number of local variables, so a stack overflow will occur-
void calculate(int a) { if (a== 0) return; a = 6; calculate(a); } int main() { int a = 5; calculate(a); }
D) If you declare a large number of local variables or declare a large-dimensional array or matrix, it may cause stack overflow.
int main() { A[20000][20000] }
The above is the detailed content of In C language, Heap overflow and Stack overflow refer to when a program exceeds its allocated boundaries when using heap memory or stack memory.. For more information, please follow other related articles on the PHP Chinese website!