Diese Dinger verursachen am laufenden Band Probleme. Ich habe ja durchaus Spaß daran, wann man auch mal wirklich den eigenen Kopf benutzen muss beim Programmieren, aber Zeiger sind schon eine gewisse Herausforderung.

Edit: Es lag nicht an den Zeigern, sondern daran, dass ich ein paar kleine Fehler in meinem Code hatte, die ich übersehen habe.

  • excral@feddit.org
    link
    fedilink
    arrow-up
    8
    ·
    6 days ago

    Fairer Weise, wenn man Zeiger nicht versteht, wird man mit dem Verleih-Prüfer auch nicht klar kommen. Das wird dann auch nur maximal frustrierend sein. Für einen blutigen Anfänger, der sich noch mit Zeigern abmüht ist der gelegentliche Segfault sicher angenehmer, als bei jedem kleinen Fehler, der eventuell aufgrund glücklicher Umstände nicht mal zu Problemen geführt hätte, in Kompilierfehler zu rennen. Als Anfänger hätte ich die wichtige Arbeit des Verleih-Prüfers sicher noch nicht zu schätzen gewusst und wahrscheinlich eher als Gängelung wahrgenommen.

    Das gesagt, ich liebe Rost und grade der maschinennahen Programmierung ist es das beste, was ihr seit Ewigkeiten passiert ist. Im

    • Flipper@feddit.org
      link
      fedilink
      arrow-up
      1
      ·
      5 days ago

      Das gute ist, das der Übersetzter dir hilft statt in C einfach Dinge wegzuoptimieren. Er erklärt warum was nicht erlaubt ist.

      Was du prüfst ob der Zeiger null ist. Darf er nicht sein, weg damit. Viel Spaß mit dem Speicherfehler. 👋

      • al4s@feddit.org
        link
        fedilink
        arrow-up
        2
        ·
        5 days ago

        Kleiner Trick aus der Industrie, einfach die Entkäfer Version ausliefern. Dann funktioniert sogar mein Code!

        • Flipper@feddit.org
          link
          fedilink
          arrow-up
          2
          ·
          4 days ago

          Bei uns wird ein Programm mit MS C Compiler 98 übersetzt, weil mit neueren Compiler das Programm nicht mehr läuft.

          Denn es wird mit volatile Thread Synchronisierung betrieben. 🥴

    • Randelung@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      5 days ago

      Ich weiss heute noch nicht, wie man eine bidirektionale verkettete Liste baut (in sicherem Rost meine ich nicht möglich) oder Referenzen von anderen Objekten in einem Strukt korrekt Lebenszeit annotiert.

      • PlexSheep@infosec.pub
        link
        fedilink
        arrow-up
        1
        ·
        4 days ago

        Geht halt mit Pointern. Hab ich schon gemacht. Wo es wirklich spannend wird sind intrinsische verkettete listen (also die Listen Heads sind Teil vom struct, nicht das struct selbst).

        Problem ist, dass du immer garantieren musst, dass sich die Addresse der Listenobjekte nicht ändert. Dafür gibt’s Pin, Box, und Versprechen auf Ehre.

      • Ephera@lemmy.ml
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 days ago

        Für die bidirektionale Liste muss man, soweit ich weiß, mit Rc auf der einen Seite und rc::Weak auf der anderen Seite arbeiten.

        Fairerweise muss ich aber sagen, dass ich es noch nie ausprobiert habe. Sowas braucht man ja doch eher selten, und wenn man es braucht, will man oftmals einfach VecDeque.