C++ 内存相关

时间:2024-11-04 23:33:44

1、C++的内存管理可分为以下几个部分:

  栈:记录程序的执行过程。

  堆:采用new,delete申请释放内存。

  *存储区:对应于C中使用malloc,free申请释放内存。

  全局存储区:也叫静态存储区,存储static对象,包括全局对象,命名空间内对象,文件作用域内的static对象,类中的static对象,方法内的static对象。

  常量存储区:存放文本常量。

2、对于32位系统,堆可用大小为为4G,对于一般程序,可认为无限大。栈可用大小为1M,也可以人为修改。

3、 1Byte = 8Bit

  1Word = 2Byte

  1K = 1024Byte

  1M = 1024K

  1G = 1024M

  我们平时上网的速度是4M,但是我们下载的时候,发现最大速度也就四五百K每秒,这是怎么回事?网络运营商说的4M,是指4M Bit,计算机显示的是Byte为基本单位,因此4M = 4*1024/8 = 512K

4、注意:字节是内存编址的最小单位。因此,对于大小为0的对象(没有实例字段和虚方法),为了表示在内存中,必须要用一个字节表示。再比如,对于bool,按道理只要1个bit就能表示了,但是由于字节是内存编址的最小单位,bool变量也要占用一个字节,浪费了7个Bit。