5堆与复制构造函数精选.ppt

第5章 堆与复制构造函数 5.1 堆 5.2 需要new和delete的原因 5.3  默认的复制构造函数 5.4  自定义复制构造函数 5.1 堆 Heap 堆是按动态方式分配的内存区域。 在程序中需要空间存放数据时,就从堆中申请动态内存单元,使用完毕后释放动态内存单元。 这种动态内存分配方式能够显著地提高内存的利用率。 C++程序的内存布局 栈 Stack 栈的内存管理严格遵循后进先出(LIFO: Last in, First Out)的顺序, 即释放栈中对象所占内存时的顺序刚好与给这些对象分配栈中内存时的顺序相反,这一点正是实现函数调用所需要的,所以栈用来实现函数调用。 从栈中分配内存效率特别高,栈内存分配运算内置于处理器的指令集中,效率很高。对栈的充分利用是C/C++编译程序能产生优质高效代码的原因之一。 动态内存分配 堆的内存是以动态分配方式管理的。 所谓动态分配的内存是在程序运行期间获得的内存。 动态存储分配方式允许我们的程序可以在执行期间根据实际需要存放的数据量来申请合适数量的内存单元。 这种动态分配方式不但能够提高内存的利用率,而且对于链表和二叉树等动态数据结构特别有用。 动态内存申请和释放 用函数malloc( ) 分配的动态内存必须用函数free( )释放; 用new申请的动态内存必须用delete 释放。 因为在C++程序中,从堆中获取的内存单元不

文档评论(0)

1亿VIP精品文档

相关文档