Untypischer Laufzeitfehler durch malloc()



  • @EL-europ sagte in Untypischer Laufzeitfehler durch malloc():

    Die "naive" Logig verbietet es doch Code zu Schreiben der nicht benutzt werden soll.

    ... der nicht vom Benutzer der Library benutzt werden soll. Der aber sehr wohl von einem Tool benutzt werden soll, das Checks durchführt.



  • @DirkB ich habs eben mal ausprobiert, an der Stelle wo

    (*(int *)0);
    

    zugewiesen wird bricht das Programm mit einen Speicherzugriffsfehler ab. Was ist Lint?



  • @EL-europ sagte in Untypischer Laufzeitfehler durch malloc():

    @DirkB ich habs eben mal ausprobiert, an der Stelle wo

    (*(int *)0);
    

    zugewiesen wird bricht das Programm mit einen Speicherzugriffsfehler ab.

    <Loriot>Ach was!</Loriot>

    Was ist Lint?

    Liest du die Antworten eigentlich? (insbes. die von @DirkB)



  • @wob Eben grad. Scheint ein Tool für Checks zu sein. was wird damit gecheckt? Das scheint wohl ein breit angewendetes Tool zu sein.
    Ich hab bisher meine Programme in python und php geschrieben. Da Brauch man eigentlich nur Funktionen (im web) finden und die dann kombinieren, den Rest macht der Interpreter. C ist für mich eine ganz andere Art zu Programmieren, weshalb ich es auch können will.
    Sorry wenn ich hier als naiv oder gar unhöflich erscheine, ich hab immer einen Code an dem ich Teste und probiere neben dem Browser und bin als dort noch geistig gefangen.
    Ich muss mir mit meinen Fragen und Beiträgen besser mehr Zeit nehmen



  • @EL-europ sagte in Untypischer Laufzeitfehler durch malloc():

    Ich hab bisher meine Programme in python und php geschrieben. Da Brauch man eigentlich nur Funktionen (im web) finden und die dann kombinieren, ...

    Auch da gibt es Linter. Noch nie was von flake8 oder pylint gehört? In PHP kenne ich mich nicht aus, aber auch da gibts sicher Linter. Jedenfalls haben die Linter ungefähr nichts damit zu tun, wie man die Libraries kombiniert.



  • @wob
    auf
    http://www.momefilo.hopto.org
    kannst du ein php Interface für eine Datenbank von mir sehen das die Werte als Liniengrafik darstellt. Ein pythonscript liest die Daten von einem AD-Wandler über die i2c-Schnittstelle und schreibt sie in die Datenbank. Damit kann ich die Ströme meine kleine Solaranlage über die Zeit graphisch darstellen, und als Schmakerl auch übers Netzt anschauen. Und Konfigurieren, einen Schutz hab ich nicht eingebaut. Wer schaut schon auf momefilo.hopto.org nach um dort die Konfiguration zu verstellen



  • @wob
    Ich hab noch nicht mit solch komplexen Programmen gearbeitet das solch ein Tool einen Vorteil brächte. Die Grundfunktionen "break" und "print" der gdb hab ich gestern zu Testzwecken probiert, mehr hab ich mich in diese Richtung noch nicht bewegt. Und mein eigentliches Ziel ist, das pythonscript welches die Daten aus der i2c-Schnittselle liest durch ein c-Programm zu ersetzen. Das ganze soll auf x86_64 für arm cross-compilert werden



  • @EL-europ sagte in Untypischer Laufzeitfehler durch malloc():

    [...] weil ich die curses eigentlich cross-compilieren will [...]

    Nein, das willst Du garantiert nicht, zumindest nicht für Windows. Wenn Du dieses Snake-Dings für Windows kompilieren willst, dann nimm PDCurses für Windows und ncurses für Linux und ähnliche.



  • Hallo @Swordfish
    Am Snake mach grad nix mehr, das war nur zum "Forschen" und probieren. Und die cross-compilierung der curses (von x86_64 Linux zu arm Linux) ist als Übung gedacht. Ich hab drei rpi's mit denen ich testen und probieren will. Da nehm ich das cross-compilieren gleich mit denk ich mir, anstatt aufm Pi selbst zu compilieren



  • @EL-europ sagte in Untypischer Laufzeitfehler durch malloc():

    Ich hab noch nicht mit solch komplexen Programmen gearbeitet das solch ein Tool einen Vorteil brächte.

    Ich glaube, das ist ein Vorurteil. Auch in kleinen, kurzen Programmen kannst du Dinge einbauen, die man so nicht macht. Im Gegenteil, man sollte schon bei kleinen Programmen anfangen, diese Tools zu benutzen. Macht man das erst bei einem großen Projekt, gibt es garantiert viele Dinge, die angemeckert werden und ggf. aufwendig zu fixen sind. Und seien es nur stilistische Dinge. Lieber von Anfang an pylint, clang-tidy und co benutzen.

    Apropos stilistisch - wäre es nicht toll, wenn jemand bei folgendem Code warnen würde?

    if (bedingung)
        if (bedingung2)
            return 1;
    else
        return 2;
    

    clang-tidy tut das. Gerade wenn du auch noch Python machst, kann dir sowas leicht passieren - oder auch, falls du hier im Beispiel den else-Branch der Bedingung2 gelöscht hast - und plötzlich gehört das else hier dann zum falschen if. Sowas kann bei kleinen Progrämmchen nicht passieren? Ich glaube doch, das kann passieren!



  • @wob
    Ja vielleicht, das ist eine Überlegung wert. Ich mach das als Hobby und kam nie auf die Idee ein Programm meinen Code checken zu lassen, ich nutze meine Programme nie. Mit Aussnahme des php-Interfaces für die Datenbank aufm rpi, das ist auch bis jetzt das einzige mit Hand und Fuß. Jetzt will ich aber erstmal die curses cross-compilieren und sie statisch einbinden können, da ist nicht viel mit coden. Wenn ich c einigermaßen beherrsche werden bestimmt auch wieder Ideen zum coden kommen wo so ein checker dann Sinn macht.
    Wenn ich das Crosscompilen für den pi drauf hab, also auch die curses mit einbinden kann mach ich ein stepbystep HowTo auf deutsch wo kein Umgang mit "Fremdprogrammen" ausser der gcc erlernt werden müssen. Ich mag es nicht vom Code anderer abzuhängen, obgleich ich weiß das dies unmöglich ist weil ich ihn ja täglich nutze😄 .



  • @Swordfish sagte in Untypischer Laufzeitfehler durch malloc():

    Nein, das willst Du garantiert nicht, zumindest nicht für Windows. Wenn Du dieses Snake-Dings für Windows kompilieren willst, dann nimm PDCurses für Windows und ncurses für Linux und ähnliche.

    Im Download sagen die Entwickler die Version 3,8 vom 02.2019 wäre die aktuelle, da gibt es aber noch 3.9 vom 09.2019. Ich nehme die 3.8 wenn du keine andere Empfehlung hast.
    Das cross-compilen mit ncurses hat eben fehlerfrei im gesamten Prozess funktioniert, die config-optionen der curses waren die größte Hürde. Jetzt mach noch ich das snake für windows mit der PDcurses dann das HowTo