查看完整版本: 栈的动态内存分配问题

crazywgj 2009-7-16 20:18

栈的动态内存分配问题

[size=5]链栈中有入栈和出栈函数 bool push ( Telem& el)、Telem pop()[/size]
[size=5]  [/size]
[size=5]入栈函数的处理过程:[/size]
[size=5]      (1)生成一个新的结点,并令其元素值为el[/size]
[size=5]      (2)将该结点从栈顶插入到链栈中[/size]
[size=5]出栈函数的处理过程:[/size]
[size=5]       (1)  判断链栈是否为空,若空则返回空元素[/size]
[size=5]       (2)保存栈顶结点的元素值el,并修改栈顶指针使之指向其后继[/size]
[size=5]       (3)置返回函数值为el[/size]
[size=5][color=mediumturquoise]问题:[/color][/size]
[size=5][color=mediumturquoise]          1.出栈函数只是将栈顶指针指向其后继,并没有释放其动态分配的指针的存储空间,而某个元素入栈时是动态分配了空间的。但析构函数释放链栈所占的存储空间时只释放从当前元素以后 的 结点存储空间,[/color][/size]
[size=5][color=mediumturquoise]意思是:设一个空栈,a、b入栈,则分配两个存储空间,再令b出栈,那么析构函数只释放了a的结点存储空间,那么执行new与delete的次数不一致,不知道该怎样解释[/color][/size]
[size=5][color=mediumturquoise]           2.清除栈的函数是只是将当前指针置为NULL,而未释放结点的存储空间,又是该怎样解释?[/color][/size]
[size=5][/size]
[size=5][/size]
页: [1]
查看完整版本: 栈的动态内存分配问题