在C++中,内存可以分为几种不同的区域,每种区域用于存储不同类型的数据,它们包括:
静态存储区(Static Storage Area):
栈区(Stack): 栈区用于存储函数调用的上下文和局部变量。每次调用函数时,将分配一部分栈内存用于存储局部变量和函数调用信息。当函数退出时,这些局部变量将自动销毁。
堆区(Heap): 堆区用于动态分配内存,通常由程序员手动分配和释放。堆内存的生存期不受函数作用域的限制,可以在程序的任何地方进行分配和释放。C++中的 new 和 delete 操作符或者 malloc() 和 free() 函数用于在堆区分配和释放内存。
以上所有分区,在物理内存上没有任何区别,他们都是内存上一块区域,只是操作系统和语言层面上,对其进行区分,因为这样可以方便管理和优化
静态存储区
,栈区
,堆区
的主要区别是生命周期不同静态存储区
又分为两个全局区和常量区
,他们的生命周期相同,区别是读写权限不同全局变量、静态全局变量、函数内部静态变量都是存放在全局区,而全局常量、静态全局常量、函数内部静态常量都存放在常量区