堆的详解和使用
2011-07-28 12:38
190 查看
下面一段源自huffman编码,其中体现了堆的具体过程。
weight为类的成员变量。
程序开始,初始化时,weight指向不确定位置,当上面程序在内存中运行时,将各个数据存储在堆中,运行完成后,将weight指向这个位置。使用堆要手动析构,自己要在析构中释内存,否则在程序运行完成该内存依然被占用。weight如果定义为局部变量时,即使代码块结束,变量被释放,但指向的那个空间的内容仍然存在,所以在代码块结束前要将内存释放。
weight为类的成员变量。
void HuffmanTree::CreateDate() { weight = new int[5];//程序在开始时,weight指向不确定位置 //直到CreateDate运行完成,将所有数据存在连续堆中,然后将weight指向这片区域。 weight[0] = 10; weight[1] = 5; weight[2] = 7; weight[4] = 13; }
程序开始,初始化时,weight指向不确定位置,当上面程序在内存中运行时,将各个数据存储在堆中,运行完成后,将weight指向这个位置。使用堆要手动析构,自己要在析构中释内存,否则在程序运行完成该内存依然被占用。weight如果定义为局部变量时,即使代码块结束,变量被释放,但指向的那个空间的内容仍然存在,所以在代码块结束前要将内存释放。
HuffmanTree::~HuffmanTree() { //dtor delete[] weight; }
如果程序中定义了临时变量,并动态为其开辟空间,在临时变量的有效范围内要将其析构。否则会出现内存泄漏的现象。
相关文章推荐
- vue计算属性及使用详解
- Sniffer 使用详解
- ASP.NET2.0 ObjectDataSource的使用详解(1)
- iBatis开发详解(8)------------使用XML
- linux命令详解之useradd命令使用方法
- fsck命令使用详解
- iOS NSNotificationCenter 使用姿势详解
- jQuery中 prop() attr()使用详解
- ViewPager详解(一)——ViewPager的基本使用完整示例
- 淘宝JAVA中间件Diamond详解(1)-简介&快速使用
- Spring MVC中使用Google kaptcha验证码的方法详解
- iOS开发者证书-详解/生成/使用
- 详解ExplosionField的使用,实现View的粉碎效果
- LambdaProbe 监控Tomcat使用详解
- Jsp数据库连接类使用详解
- DataList控件使用详解
- JDom使用详解
- JQuery上传插件Uploadify使用详解
- iOS-GCD使用详解
- HTML5使用详解