EDIT: I see some comments saying the Mastodon post didn’t add anything to it. I agree!

I am a little new to posting so I thought it was polite to include the source.

It was late and at first glance my sleepy mind thought they just saw these two images coincidentally side by side on their phone. Not like it was just a single meme. LOL

Here’s the raw image for fellow meme collectors. :)

Original link: https://chaos.social/@gsuberland/116037932568933433

  • Jakeroxs@sh.itjust.works
    link
    fedilink
    arrow-up
    14
    ·
    19 hours ago

    As a coding noob mostly c#, my guess is there’s some functions or similar in C++ that are potentially “dangerous” in some way but commonly used?

    • Miaou@jlai.lu
      link
      fedilink
      arrow-up
      3
      ·
      4 hours ago

      Not specific functions, but as said elsewhere, the language is a mine field that too many joyfully walk upon.

      Look up e.g. pointer aliasing. I’d bet most of my colleagues don’t have a clue about that (not a risky bet given the crap they write). Thankfully compiler writers know the majority of their users are too lazy to learn the stupid standard in this case (I don’t blame them). But not necessarily in other ones.

      C++ is a tool designed for expert but used by everyone’s Grandma, with the results you could expect.

    • zerofk@lemmy.zip
      link
      fedilink
      arrow-up
      1
      ·
      5 hours ago

      There are many things in C++ that are “undefined behaviour”, UB (and several similar but technically different terms). These may or may not result in an error or warning at compile time. Worse, they usually lead to crashes or even seemingly random behaviour - even in code that is not directly tied to the UB.

      The easiest example is memory management and pointers. You can create a new object and assign it to a variable. If you then delete the object, the variable could still point to the deleted object’s memory. And if you use that variable, that’s UB. It will likely crash, but probably not right away, which can be very hard to diagnose.

      An interesting fact about UB is that optimisers may assume it does not exist. They can basically reason “well this code path would lead to UB, which can’t exist, so this code path can just be removed”. This could theoretically even affect code that runs before the UB.

    • Zink@programming.dev
      link
      fedilink
      arrow-up
      4
      ·
      9 hours ago

      If you do a search for something like “why is Rust safer than C++” you will find multiple examples of the fun ways we can screw ourselves in c/c++, lol.