内存分配方式

在C++中,内存分成5个区,分别是堆,栈,自由存储区,全局/静态存储区和常量存储区。

栈:函数内的局部变量的存储单元可以在栈上创建
堆:由new分配的内存块
自由存储区:由malloc等分配的内存块
全局/静态存储区:全局变量和静态变量被分配到同一块内存
常量存储区:存放常量


堆和栈的区别:
  管理方式:  对于栈来讲,由编译器自动管理,无需手工控制;
                      对于堆来讲,释放工作由程序员控制,容易产生memory leak.

   空间大小: 一般堆可以达到4G,栈空间大小是1M
 
    碎片问题:频繁的new/delete势必造成内存空间的不连续,造成大量的碎片,而栈是先进后出的队列

    生长方向:堆,生长方向向上就是内存地址增加;栈,生长方向向下,内存地址减小

     分配方式:  堆都是动态分配的,栈有静态分配和动态分配。
                           静态分配由编译器完成,如局部变量的分配,动态分配由alloca函数分配。

     分配效率: 堆的效率比栈的效率低的多。
 
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值