0
我很好奇,为什么一些像这样的代码给出了一个段错误复制的结构指针的指针
square->type=start.type
他们是同一类型的结构,广场是一个指针,开始是没有的。我认为start.type中的值将被复制到square指向的类型部分。
有人可以解释segfault背后的原因吗?
我很好奇,为什么一些像这样的代码给出了一个段错误复制的结构指针的指针
square->type=start.type
他们是同一类型的结构,广场是一个指针,开始是没有的。我认为start.type中的值将被复制到square指向的类型部分。
有人可以解释segfault背后的原因吗?
这可能是以下原因之一:
square
为空。square
不为空,但未初始化,表示它没有指向有效的对象。square
在执行该行之前被删除,这也意味着它没有指向有效的对象。type
(如果type
是一个类/结构并且它的赋值运算符被重载),有些地方是错误的。start
是一个参考,被deferencing空分配,例如:
Apple *apple=0;
Apple &start = *apple;
start
是一些参考和东西被删除,如:
Apple *apple=new Apple();
Apple &start = *apple;
delete apple;
square->type = start.type; // this line may not cause segfault but this is actually undefined behavior
广场一个空指针 – FRob
如果你显示更多的代码,比如使用它的上下文会更好。但是让这个代码工作'square'需要不是NULL。 – fen
这条线本身没有错。如果失败,那是因为方形指针有问题。 – john