栈区(stack)

由编译器自动分配和释放,主要用于存放函数的参数值、局部变量的值等。数据采用先进后出(FIFO)的规则,即在函数执行完毕后,栈上的数据会被自动清除。

堆区(heap)

由程序员手动分配和释放,如果程序员使用完这块内存没有手动释放内存,可能会造成内存泄露,程序结束时由操作系统回收。堆区用于动态内存分配,比如申请内存空间以存放动态分配的变量。

全局/静态存储区(Global/Static Area)

全局变量和静态变量被分配到同一块内存中,他们在程序编译阶段就已经分配好内存空间并可能已经被初始化。全局/静态存储区内的常量包括字符串常量,一旦初始化,其值不可被修改。

文字常量区(Constant Area)

用于存放常量字符串,程序结束后由系统释放。

代码区(Code Area)

存放二进制代码,例如函数的定义和声明的代码。