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

C++ LinkedList error: Access violation error

本文关键字:错误 访问冲突 C++LinkedList      更新时间:2023-10-16

我正在尝试用C++实现链表。以下是我的代码,我得到了这个异常

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

头文件

#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文件

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

主要功能

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驻留在堆栈上,它的生存时间随着控件离开LinkedList::add成员函数而结束。而是动态分配tail->next节点。

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