• Ephera@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    2 months 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
      6
      ·
      2 months 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.