Home  >  Article  >  Backend Development  >  In C language, Heap overflow and Stack overflow refer to when a program exceeds its allocated boundaries when using heap memory or stack memory.

In C language, Heap overflow and Stack overflow refer to when a program exceeds its allocated boundaries when using heap memory or stack memory.

王林
王林forward
2023-09-11 13:41:021338browse

在C语言中,堆溢出(Heap overflow)和栈溢出(Stack overflow)是指程序在使用堆内存或栈内存时超出了其分配的边界

Heap overflow

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));
   }
}

Stack Overflow

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!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete