您的位置:首页 > 其它

堆的详解和使用

2011-07-28 12:38 190 查看
下面一段源自huffman编码,其中体现了堆的具体过程。

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;
}
如果程序中定义了临时变量,并动态为其开辟空间,在临时变量的有效范围内要将其析构。否则会出现内存泄漏的现象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: