内存的5个区的详解

来源:互联网 发布:sql with cte as 编辑:程序博客网 时间:2024/04/26 18:19

总而言之,可概括认为:

C++内存,可分为5个区,分别是:

栈、堆、自由存储区、全局/静态存储区、常量存储区。

(一)栈

1.创建方式:在执行函数时,函数内的局部变量可在栈上创建,或者函数参数。

(关于这点,我乍一看认为函数内很多余,难道有不是函数内的局部变量,后期研究一下,好像跟静态局部变量有关)

2.释放方式:函数结束或者调用结束时,自动释放;

3.参与者:由编译器自动分配创建;

4.特点:一级缓存,效率高,内存有限,自动清空;

5.内存大小限制:Windows下是向低地址扩展的,连续的内存空间,大小固定,若申请的栈空间超出栈的剩余空间,会提示overflow.

 

(二)堆

1.创建方式:由new关键字分配;

2.释放方式:由delete关键字释放,若没有用delete,会造成内存泄漏;

3.参与者:程序员;

4.特点:二级缓存,效率低,空间大,不会自动清空;


(三)自由存储区

1.创建方式:malloc函数分配;

2.释放方式:free函数释放;

3.参与者:程序员;


(四)全局/静态存储区

1.创建方式:存储全局变量、静态变量和常量字符串;

2.释放方式:程序结束;

3.参与者:编译器;


(五)常量存储区

1.创建方式:存储常量,不允许修改

0 0
原创粉丝点击