堆和栈的区别
栈和堆都是⽤于存储程序数据的内存区域。
栈是⼀种有限的内存区域,⽤于存储局部变量,函数调用信息等。
堆是一种动态分配的内存区域,⽤于存储程序运⾏时动态分配的数据。
栈上的变量生命周期与其所在函数的执行周期相同,而堆上的变量生命周期由程序员显式控制。
栈上的内存分配和释放是⾃动的,速度较快。⽽堆上的内存分配和释放需要⼿动操作,速度相对较慢。
C++内存分区
1.栈 :栈用于存储函数的局部变量、函数参数和函数调用信息的区域。函数的调用和返回通过栈来管理。
2.堆 :堆用于存储动态分配的内存的区域,由程序员手动分配和释放。使用 new 和 delete 或 mal1oc 和 free 来进行堆内存的分配和释放。
3.全局/静态区 : 全局区存储全局变量和静态变量。生命周期是整个程序运行期间。在程序启动时分配,程序结束时释放。
4.常量区 :常量区也被称为只读区。存储常量数据,如字符串常量。
5.代码区 :存储程序的代码。