C++ 内存相关
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。