复制struct指针指针

时间:2013-09-28 15:50:17

标签: c++ pointers struct

我很好奇为什么像这样的代码会产生段错误

square->type=start.type

它们是相同类型的结构,square是指针而start不是。我认为start.type中的值将被复制到square指向的类型部分。

有人可以解释段错的原因吗?

1 个答案:

答案 0 :(得分:3)

这可能是以下原因之一:

  1. square为空。
  2. square不是null但未初始化,意味着它没有指向有效对象。
  3. square在执行该行之前被删除,这也意味着它没有指向有效的对象。
  4. type的重载赋值运算符出错了(如果type是一个类/结构,并且它的赋值运算符被重载了。)
  5. start是一个引用,并通过引用null来分配,例如:

    Apple *apple=0; 
    Apple &start = *apple;
    
  6. 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