尝试使用集合函数时出现分段错误
Segmentation fault when trying to use a set function
尝试在节点类中设置私有数据成员时遇到问题。这是文件:
#include <iostream>
#include <string>
using namespace std;
template <class myType>
class node{
private:
myType data;
node<myType>* next;
public:
// other functions
void setData(myType p){
data = p;
}
// other functions
};
以下是尝试使用节点类的类:
template <class myType>
class LL{
private:
node<myType>* head;
int index;
public:
// other functions
void addItem(myType d){
node<myType>* p;
p->setData(d);
p->setNext(NULL);
if(head == NULL){
head = p;
}
else{
node<myType> *temp;
temp = head;
head = p;
head->setNext(temp);
}
}
// other functions
};
当尝试在第一个节点类中使用setData函数时,会出现此问题。在LL类的addItem函数中,当调用p->setData时,我会得到一个分段错误。通过调试,我发现一旦程序试图在setData函数中设置data=p,就会出现分段错误。有什么建议吗?
node<myType>* p;
您已经声明了一个指针。您还没有初始化指针,所以它不指向任何节点(也不指向null;指向的内存地址是不确定的(。
p->setData(d);
这里,您可以取消引用p
来调用指向对象上的成员函数。但是没有指向对象,因为您没有创建任何节点,p
也没有指向任何节点。调用未初始化指针的成员函数的行为是未定义的(更普遍地说,读取任何不确定的值都有未定义的行为(。
相关文章:
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我的阵列太大时出现分段错误
- 分段错误当我试图运行程序时出错
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 尝试使用集合函数时出现分段错误
- 我无法缩小此分段错误的原因
- g++的分段错误(在NaN上使用to_string两次时)
- 我是如何在这段代码中出现分段错误的
- 创建结构的数组时遇到分段错误
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 在 c++ 中实现 Trie 时出现分段错误
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 为什么我遇到分段错误?
- 动态类的分段错误(家庭作业问题)
- 分段错误 - 读取初始化指针的数组
- 如何摆脱C ++中的分段错误错误?
- 使用 CTYPE 时出现分段错误
- 为什么代码给出分段错误?