Linux people doing Linux things, it seems.

  • Giooschi@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    13 days ago

    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?

    • ZILtoid1991@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      13 days ago

      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
      
      • Giooschi@lemmy.world
        link
        fedilink
        English
        arrow-up
        3
        ·
        13 days ago

        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.