栈区(stack)
由编译器自动分配和释放,主要用于存放函数的参数值、局部变量的值等。数据采用先进后出(FIFO)的规则,即在函数执行完毕后,栈上的数据会被自动清除。
堆区(heap)
由程序员手动分配和释放,如果程序员使用完这块内存没有手动释放内存,可能会造成内存泄露,程序结束时由操作系统回收。堆区用于动态内存分配,比如申请内存空间以存放动态分配的变量。
全局/静态存储区(Global/Static Area)
全局变量和静态变量被分配到同一块内存中,他们在程序编译阶段就已经分配好内存空间并可能已经被初始化。全局/静态存储区内的常量包括字符串常量,一旦初始化,其值不可被修改。
文字常量区(Constant Area)
用于存放常量字符串,程序结束后由系统释放。
代码区(Code Area)
存放二进制代码,例如函数的定义和声明的代码。