发新话题
打印

栈的动态内存分配问题

栈的动态内存分配问题

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

TOP

发新话题