分段错误(核心转储)问题c ++:动态内存

时间:2017-04-05 22:28:26

标签: c++

 template<class T>
   void SimpleList<T>::in_node_l(void){
       Node* fin;
       fin=new Node;
       (*last).next=fin;
       last=fin;        
       size++;
}

当函数push调用in_node_l成员函数时,我得到Segmentation fault(core dumped)错误

 template<class T>
   void stack<T>::push(T var){
       SimpleList<T>::in_node_l();
       (*(this->last)).data=var;
       position++;
       return;
  } 

stack是派生类:

    class stack : public SimpleList<T>

节点声明为

template<class T>
struct SimpleList<T>::Node{
  T data;
  Node* next;
 };

如果我在main中调用in_node_l,但我没有收到任何错误。

类堆栈的构造函数是:

template<class T>

stack<T>::stack(int s,string n)
:SimpleList<T>(s,n)
{
  position=1;
}

SimpleList的构造函数由

给出
template<class T>
SimpleList<T>::SimpleList(int s,string n){
int i;
//name= input name
Node *prev,*current;
size=s;
name=n;
if(s==1){
    current=new Node;
    first=current;
    last=current;
    cout<<"SIMPLELIST CONSTRUCTUR"<<endl;
}
else{
    for (i=1;i<s;i++){
        current=new Node;
        if(i==1){
            first=current;
        }
        else{
            (*prev).next=current;
            if(i==s-1){
                last=current;
                if(last=(*prev).next){
                    cout<<"SIMPLELIST CONSTRUCTUR2"<<endl;
                }       
            }
        }
        prev=current;
    }
}

}

0 个答案:

没有答案