Linux people doing Linux things, it seems.

  • ZILtoid1991@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    2 months ago

    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.

    • Giooschi@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      2 months 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
        ·
        2 months 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
          ·
          2 months 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.