我正在尝试用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;
}
}
答案 0 :(得分:2)
LinkNode node(data);
tail->next = &node;
tail = tail->next;
node
驻留在堆栈上,并且当控件离开LinkedList::add
成员函数时,它的生命周期结束。相反,动态分配tail->next
节点。
析构函数也需要正确释放动态获取的资源。目前,该程序存在内存泄漏。