将指针设置为 null 会产生运行时错误
Setting pointer to null creates runtime error
我环顾四周,还没有看到像这个问题这样具体的问题。
我试图在这个程序中创建一个链表,但是我得到一个 运行 时间错误并且在我 运行 时没有构建错误。
主要:
#include <iostream>
#include "LinkedListInterface.h"
#include "LinkedList.h"
#include <fstream>
int main(int argc, char * argv[])
{
ifstream in(argv[1]);
LinkedList<int> myIntList;
}
链表class:
#ifndef LINKED_LIST_H
#define LINKED_LIST_H
#include <string>
#include <sstream>
using namespace std;
template<typename T>
class LinkedList : public LinkedListInterface<T>
{
public:
LinkedList()
{
head->next = NULL;
}
private:
struct Node
{
T data;
struct Node *next;
};
Node *head;
};
我确信问题不在于 argv[1] 上的越界错误,删除 LinkedList() 或 main() 中的任何语句会使程序 运行 顺利进行.
您必须在调用 head->next = NULL
之前构造 head
。但这意味着当您创建它时列表中有一个空节点。
template<typename T>
class LinkedList : public LinkedListInterface<T>
{
public:
LinkedList()
{
// At least do this
head = new Node();
head->next = NULL;
// The best idea is to do below:
// head = null;
}
private:
struct Node
{
T data;
struct Node *next;
};
Node *head;
};
我环顾四周,还没有看到像这个问题这样具体的问题。
我试图在这个程序中创建一个链表,但是我得到一个 运行 时间错误并且在我 运行 时没有构建错误。
主要:
#include <iostream>
#include "LinkedListInterface.h"
#include "LinkedList.h"
#include <fstream>
int main(int argc, char * argv[])
{
ifstream in(argv[1]);
LinkedList<int> myIntList;
}
链表class:
#ifndef LINKED_LIST_H
#define LINKED_LIST_H
#include <string>
#include <sstream>
using namespace std;
template<typename T>
class LinkedList : public LinkedListInterface<T>
{
public:
LinkedList()
{
head->next = NULL;
}
private:
struct Node
{
T data;
struct Node *next;
};
Node *head;
};
我确信问题不在于 argv[1] 上的越界错误,删除 LinkedList() 或 main() 中的任何语句会使程序 运行 顺利进行.
您必须在调用 head->next = NULL
之前构造 head
。但这意味着当您创建它时列表中有一个空节点。
template<typename T>
class LinkedList : public LinkedListInterface<T>
{
public:
LinkedList()
{
// At least do this
head = new Node();
head->next = NULL;
// The best idea is to do below:
// head = null;
}
private:
struct Node
{
T data;
struct Node *next;
};
Node *head;
};