【c++】内存存储分区分类

内存分区管理
本文介绍了计算机内存如何被划分为代码区、数据区、堆区和栈区,并详细解释了每种分区的功能及其应用场景,特别是C++中堆和栈的应用。
      我们知道计算机最大的功能是处理数据,字符串是数据,变量是数据,图片是数据,声音和视频也是数据。为了方便处理,节省空间,提高效率。计算机把数据分为静态和动态,静态数据包括数值型、string型、常量等,动态数据包括函数、对象等。数据的处理是在内存中进行的,那么是不是这么多类型的数据都在一起处理那?当然不是,内存储存或处理不同的数据有不同的分区。
      内存存储数据可以分为四个分区: 代码区、数据区、堆区、和栈区。
      所有函数(包括主函数、非主函数、各类中的成员函数)通常存放在代码区。
      全局变量和所有静态(内部和外部)变量通常存放在数据区。
      所有函数中的局部变量 、函数参数、所有通用寄存器、返主地址等通常在该函数被调用时,被存放在栈区。
      使用new,malloc所分配的空间被存放在内存的堆区。堆是大家共有的空间,分为全局堆和局部堆。全局堆就是所有没有分配的空间,堆在操作系统对进程初始化时分配,运行时也要想系统要额外的堆,但是用完了一定要记得还给操作系统,不然会发生内存的泄露。
     
       堆和栈在c++中的应用。
       1、c++中的对象都是存放在堆中的,所在在对象创建后(new)一定记得清除(delete)
       2、堆区的存储对象

主要存储动态申请的空间。在C++中,存储“new出来”的对象,如下程序段

     int *a;

     a = new int;

    *a = 1;

      其中变量a存储的值为1,1的存储地址在堆区,即指针a所指向的那个对象的存储地址是在堆区,但是要注意的是指针a本身所存储的区域是在栈区。指针是一个变量,变量按说应该存放在数据区,为什么在栈区还在探索中.....

     总结:计算机的知识都是想通的,要想自己的知识结网,要系统的学习。在学习一门知识的时候要有深度,也有广度。

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值