内存区介绍

内存主要分为五个区域:
(1) 栈(stack):位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效。
(2) 堆(Heap):这部分是由new申请的内存,由delete或者delete[]负责释放。
(3) 自由存储区(Free Storage):由程序中的malloc、calloc、realloc分配,free释放,如果未释放将造成内存泄漏,程序结束时由OS回收。
(4) 全局区/静态区(Global Static Area):全局变量和静态变量存放区,程序编译好之后,在程序初始化的时候,全局变量和静态变量会被初始化赋值,没有区分初始化变量和未初始化变量,需要表明一点,全局静态变量和局部静态变量都是存储在同一个静态区,只是作用域不同。
(5) 常量存储区:比较特殊的区域,专门用来存储一些不可修改的常量(一般是指const变量,也有一些常量字符串)。

本文标题:内存区介绍

文章作者:Tokey

发布时间:2019年03月19日 - 21:03

最后更新:2021年06月29日 - 22:06

原始链接:http://TokeyRoad.github.io/2019/03/19/内存区介绍/

许可协议: 转载请保留原文链接及作者。

0%