C ++ LinkedList错误:访问冲突错误

时间:2016-04-09 06:29:51

标签: c++ singly-linked-list

我正在尝试用C ++实现Linked List。以下是我的代码,我得到了这个例外

  

LinkedList.exe中0x012F4C61处的第一次机会异常:0xC0000005:访问冲突读取位置0xCDFCA94C。

头文件

 // validates if the value of "password" attribute equals to that of 
 ['password', 'compare', 'message'=>"Passwords don't match"],

Cpp文件

#pragma once
#include "LinkNode.h"

class LinkedList
{
 private:
    LinkNode *head;
    LinkNode *tail;
    public:
    LinkNode add(int data);
    void print();
    LinkNode getHead();
    LinkedList(void);
    ~LinkedList(void);

    private:
    void modify();
 };

主要功能

#include "stdafx.h"
#include "LinkedList.h"
#include <iostream>

using namespace std;

LinkedList::LinkedList(void)
{
 this->head = NULL;
 this->tail = NULL;
}

LinkedList::~LinkedList(void)
{ 
}


LinkNode LinkedList :: add(int data)
{
  if(this->head == NULL)
  {
    this->head = new LinkNode(data);
    this->tail = head;
    return *head;
}
else
{
    LinkNode node(data);
    tail->next = &node; 
    tail = tail->next;
 }
}

1 个答案:

答案 0 :(得分:2)

LinkNode node(data);
tail->next = &node; 
tail = tail->next;

node驻留在堆栈上,并且当控件离开LinkedList::add成员函数时,它的生命周期结束。相反,动态分配tail->next节点。

析构函数也需要正确释放动态获取的资源。目前,该程序存在内存泄漏。