堆栈-函数内部声明的所有变量将占用堆栈中的内存。因此,函数内的任何局部变量都位于堆栈中。
堆-这是程序的未使用内存,可用于在程序运行时动态分配内存。因此,如果我们希望某些东西的寿命比声明它的函数的寿命更长,则必须在堆上分配它。
int main() { int a; //get memory allocated on stack. int *ptr=new int[7]; //memory for 7 integers allocated on heap. }
堆内存中的主要问题是碎片,而堆栈中更容易出现内存不足的问题。内存大小可以在堆中更改,而不能在堆栈中更改。