C++中指针的分段错误
Segmentation Fault with Pointers in C++
我试图构建一个结构的对象,但在分配值时遇到了分段错误。在我构建对象之后,它将通过指针传递到列表中。这是我的实现:
struct clientInfo {
int client, a, b;
};
List *info=new List();
void thread(int which) {
clientInfo *cI;
cI->client=which;
cI->a=4;
cI->b=5;
info->Append(cI);
}
在执行"cI->client=which"期间,会产生分段错误。这个项目是为任何熟悉的人在nachos平台上编写的,然而List的定义与C++中的任何链表都非常相似。对于任何不熟悉玉米片的人来说,"void thread"是我的"int main"。
提前谢谢。
clientInfo *cI;
声明了指向clientInfo
类型对象的指针。它不构造此对象。您必须先构造它,然后才能尝试访问其成员:cI = new clientInfo();
。
您必须创建clientInfo *cI
,如
clientInfo *cI = new clientInfo();
当分配ci->成员时,cI
指针实际上指向"对您没有意义的地方"。在使用之前初始化指向现有对象的指针(或为其分配对象)。
您不能直接将值分配给结构指针。应该使用new like:对其进行一些分配
clientInfo *cI =new clientInfo();
如果你不想这样做,只需贴花对象,而不是指针*cI。如下所示:
clientInfo cI;
现在,您可以直接分配像cI.a=...
这样的值,这些数据将在堆栈上存储,而不是在堆上。
相关文章:
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我的阵列太大时出现分段错误
- 分段错误当我试图运行程序时出错
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 尝试使用集合函数时出现分段错误
- 我无法缩小此分段错误的原因
- g++的分段错误(在NaN上使用to_string两次时)
- 我是如何在这段代码中出现分段错误的
- 创建结构的数组时遇到分段错误
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 在 c++ 中实现 Trie 时出现分段错误
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 为什么我遇到分段错误?
- 动态类的分段错误(家庭作业问题)
- 分段错误 - 读取初始化指针的数组
- 如何摆脱C ++中的分段错误错误?
- 使用 CTYPE 时出现分段错误
- 为什么代码给出分段错误?