简体   繁体   English

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

[英]C++ LinkedList error: Access violation error

I am trying to implement Linked List in C++. 我正在尝试在C ++中实现链接列表。 Following is my code and I am getting this exception 以下是我的代码,我正在收到此异常

First-chance exception at 0x012F4C61 in LinkedList.exe: 0xC0000005: Access violation reading location 0xCDFCA94C. LinkedList.exe中0x012F4C61的第一次机会异常:0xC0000005:访问冲突读取位置0xCDFCA94C。

header file 头文件

#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();
 };

Cpp file Cpp文件

#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;
 }
}

Main function 主功能

int _tmain(int argc, _TCHAR* argv[])
{
   LinkedList linklist;
   linklist.add(1);
   linklist.add(2);
   linklist.add(3);
   linklist.add(4);
   linklist.add(5); 
   linklist.print();
   system("pause");
}
LinkNode node(data);
tail->next = &node; 
tail = tail->next;

node resides on stack and life time of it ends as control leaves the LinkedList::add member function. node驻留在堆栈上,并且其生命周期随着控件离开LinkedList::add成员函数而结束。 Dynamically allocate the tail->next node instead. 动态分配tail->next节点。

Also destructor needs to properly deallocate the resources dynamically acquired. 析构函数还需要适当地释放动态获取的资源。 Currently, the program has memory leaks. 当前,该程序存在内存泄漏。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM