• thebestaquaman@lemmy.world
    link
    fedilink
    arrow-up
    1
    arrow-down
    1
    ·
    3 days ago

    Memory unsafe C++ is a choice. With modern C++ you have no excuse for accessing raw pointers or arrays without range checking if memory safety is a priority.

      • thebestaquaman@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        3 days ago

        As I said: There are tools in place in modern C++ that are designed to catch the errors you make. If you are using a raw pointer when you could have used a reference, or accessing an array without range checking, those are choices you’ve made. They may be valid choices in your use-case, but don’t go complaining that the language is “unsafe” when it gives you the option to code with guard rails and you choose to forgo them.

        • Harlehatschi@lemmy.ml
          link
          fedilink
          arrow-up
          1
          ·
          18 hours ago

          I’m a full time C++ developer, mostly doing high performance data processing and some visualization and TUI tools, and as someone loving C++, it’s not as simple as you frame it. In sufficiently complex code you still have to deal with these problems. Rust has some good mechanisms in place to avoid these and there are things on the way for c++26 though.

          • thebestaquaman@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            4 hours ago

            I don’t mean to say that C++ is in any way without faults. If performance is crucial, that can definitely be a reason to forgo some of the guard-rails, and then you’re on your own.

            I guess my issue with the “C++ is unsafe”-trope, is that it usually (in my experience) comes from people not having heard of all the guard-rails in the first place, or refusing to use them when appropriate. They write C++ as if they were writing C, and then complain that the language is unsafe when they’ve made a mistake that is easily avoided using stl-containers.