堆和栈
堆
功能
堆是一块动态分配内存的区域,由于存储程序运行时创建的对象。堆的大小可以在程序运行时动态调整。
特点
堆的分配和释放是由程序员手动控制。堆的分配和释放顺序可以是任意的,不需要遵循先进先出的原则。堆的分配和释放需要显式的调用函数。
C语言中使用malloc函数进行堆区申请,free函数进行堆区释放
C++中使用new函数进行堆区申请,delete函数进行堆区释放
堆是从下向上进行数据存储
栈
功能
栈是一种用于存储局部变量和函数调用信息的数据结构
栈的大小在程序编译时确定,通常较小
特点
栈的分配和释放是由编译器自动控制的。
栈的分配和释放顺序遵循先进后出的原则。栈的分配和释放无需显式的调用函数,也是由编译器自动完成的
栈是从上向下进行数据存储,包含变量、函数地址等,数据存入栈区称为入栈/压栈,取出称为出栈