• arendjr@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      1 month ago

      Modern C++ does use references, which can also reference memory that is no longer available. Avoiding raw pointers isn’t enough to be memory safe.

    • Ephera@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      1 month ago

      I don’t know much about C++, but how would that do memory safety in a multi-threaded context? In Rust, that’s one of the things resolved by ownership/borrowing…

      Or are you saying arguably, as in you could argue the definition of the categories to be less strict, allowing C++ as well as Java/C#/etc. to match it?

      • Saizaku@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        4
        ·
        1 month ago

        Because you would be using std::shared_ptr<> rather than a raw pointer, which will automatically deallocate the memory when a shared point leaves the scope in the last place that it’s used in. Along with std::atmoic<shared_ptr> implements static functions that can let you acquire locks and behave like having a mutex.

        Now this isn’t enforced at the compiler level, mostly due to backwards compatibility reasons, but if you’re writing modern c++ properly you wouldn’t run into memory safety issues. If you consider that stretching the definition then I guess I am.

        Granted rust does a much better job of enforcing these things as it’s unburdened by decades of history and backwards compatibility.