Linux people doing Linux things, it seems.

you are viewing a single comment's thread
view the rest of the comments
[–] 0 points 2 years ago (1 child)

D has many memory safety features. For local variables, one should use pointers, otherwise ref does references that are guaranteed to be valid to their lifetime, and thus have said limitations.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 5 points 2 years ago (1 child)

    For local variables, one should use pointers, otherwise ref does references that are guaranteed to be valid to their lifetime, and thus have said limitations.

    Should I take this to mean that pointers instead are not guaranteed to be valid, and thus are not memory safe?

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 2 years ago (1 child)

    Pointers are not guaranteed to be safe. DIP1000 was supposed to solve the issue of a pointer referencing to a now expired variable (see example below), but it's being replaced by something else instead.

    int* p;
    {
      int q = 42;
      p = &q;
    }
    writeln(*p);     //ERROR: This will cause memory leakage, due to q no longer existing
    
  • source
  • parent
  • hideshow 2 child comments
  • [–] 3 points 2 years ago (1 child)

    Pointers are not guaranteed to be safe

    So I guess they are forbidden in @safe mode?

    but it's being replaced by something else instead

    Do you know what is the replacement? I tried looking up DIP1000 but it only says "superceded" without mentioning by what.

    This makes me wonder how ready D is for someone that wants to extensively use @safe though.

  • source
  • parent
  • hideshow 2 child comments