Segmentation fault beim Versuch ein array aufn hip anzulegen



  • HighLigerBiMBam schrieb:

    Ich schätze XSpille vom Alter her nur auf 16-18.

    Ich bin mehr als zwei Jahre älter als du...

    HighLigerBiMBam schrieb:

    Man sollte in C++ ganz auf Zeiger [...] verzichten versuchen ...

    Mich hat man vor einigen Monaten angeflamed, dass ich hier doch bitte
    kein Halbwissen verbreiten solle(, obwohl ich Recht hatte - nur weil ich
    explizit gesagt habe, dass ich nicht sicher bin.)

    HighLigerBiMBam schrieb:

    Man kann durchaus erkennen, dass der Fragestellen aufgrund seines Fehlers und des Codes die STL nicht kennt. Daher mein Verweis man könnte dies auch mit std::vector lösen, "Schaus dir mal an!". zumal gerade die STL den Unterschied zwischen C und C++ macht.

    Wo habe ich denn etwas gegen deine Vektor-Empfehlung gesagt? 🙄

    HighLigerBiMBam schrieb:

    Ganz im Ernst warum denkst du gibt es soviele Sicherheitslücken? Von der Nutzung der STL oder von falschem Gebrauch von Arrays?

    Hast du absolut recht.

    Genau meine Meinung: "STL verwenden"
    Ich hab mich gegen das 'Zeiger-nicht-verwenden' ausgesprochen...

    HighLigerBiMBam schrieb:

    Ich bin sogar der Auffassung man kann sollte/muss in C++ auf Zeiger verzichten!

    kein Kommentar 🤡

    HighLigerBiMBam schrieb:

    Ich will es nur keinem Aufzwängen wie du deine Meinung, dass man ausschließlich mit zeigern programmieren soll.

    Ich habe nie gesagt, dass man ausschließlich mit zeigern programmieren soll...
    Wo soll ich das zum Ausdruck geebracht haben?

    HighLigerBiMBam schrieb:

    Warum haben wir shared_ptr? Exceptionsicherheit?

    Weil sie im richtigen Kontext verwendet, sehr hilfreich sind, allerdings
    kein Allerheilmittel!



  • volkard schrieb:

    Täte der Profi hier gut daran, vector zu nehmen?

    Der Profi kann durchaus den Anwendungsfall richtig beurteilen, wobei hier nichts gegen die Verwendung von Zeigern spricht. Zeiger besitzen im gegensatz zur STL einen Plus an Performance, der bei Zeitkritischen Anwendungen nicht zu verachten ist.

    XSpille schrieb:

    HighLigerBiMBam schrieb:

    Ich bin sogar der Auffassung man kann sollte/muss in C++ auf Zeiger verzichten!

    kein Kommentar 🤡

    Nur für dich so formuliert, damit deine Meinung auch ja richtig ist!



  • HighLigerBiMBam schrieb:

    Der Profi kann durchaus den Anwendungsfall richtig beurteilen, wobei hier nichts gegen die Verwendung von Zeigern spricht.

    HighLigerBiMBam schrieb:

    Man sollte in C++ ganz auf Zeiger [...] verzichten versuchen ...

    😕



  • HighLigerBiMBam schrieb:

    Zeiger besitzen im gegensatz zur STL einen Plus an Performance, der bei Zeitkritischen Anwendungen nicht zu verachten ist.

    Welch ein selten dämlicher Bockmist.
    Das ist einfach nur falsch.
    100% Unwissen.


  • Administrator

    HighLigerBiMBam schrieb:

    Zeiger besitzen im gegensatz zur STL einen Plus an Performance, der bei Zeitkritischen Anwendungen nicht zu verachten ist.

    Und das soll mal bitte jemand beweisen. Vor allem wenn man bedenkt, das ein std::vector<X>::iterator meistens nur ein typedef X* iterator ist 😉

    Grüssli



  • Dravere schrieb:

    HighLigerBiMBam schrieb:

    Zeiger besitzen im gegensatz zur STL einen Plus an Performance, der bei Zeitkritischen Anwendungen nicht zu verachten ist.

    Und das soll mal bitte jemand beweisen. Vor allem wenn man bedenkt, das ein std::vector<X>::iterator meistens nur ein typedef X* iterator ist 😉

    Grüssli

    😃 👍



  • Danke da haben wirs doch, zwei Moderatoren die auch auf meiner PRO STL Seite stehen. 👍

    Nur gut dass man diese erst mit falschäußerungen ermutigen muss zu posten.

    Für mich ist dieser Thread beendet.



  • XSpille schrieb:

    Wenn du nicht 144 Beiträge hättest, die nicht den Eindruck eines Trolls
    machen, hätte ich dich wegen des Beitrags im anderen Thread als Troll
    eingestuft...

    Ok, Troll ist bestätigt.



  • HighLigerBiMBam schrieb:

    Danke da haben wirs doch, zwei Moderatoren die auch auf meiner PRO STL Seite stehen. 👍

    Ich weiß zwar, dass Dravere pro STL ist, aber anhand seines Postings kann ich
    es eigentlich nicht erkennen 😉

    Ein STL-Code-Fragment drückt noch keine Sympathie oder Antipathie aus...

    oder wo hast du den 2. Moderator? 🙂



  • Der argumentiert seltsam.
    "Merkel ist unfähig, denn sie hat einen IQ von unter 70."
    "Nein."
    "Sieht Du, Du bist also PRO Merkel, und ich bin so geil, daß ich es Dir mit einer Lüge herauslocken konnte."
    Das ist einfach nicht logisch.



  • Vielleicht bin ich auch nur schizophren, whatever. 😃


  • Administrator

    HighLigerBiMBam schrieb:

    Vielleicht bin ich auch nur schizophren, whatever. 😃

    Ich würde eher sagen, dass du im Eifer des Gefechts etwas verhaspelst hast, es nun nicht zugeben möchtest und dich in die Enge getrieben fühlst 😉

    @XSpille,
    Es gilt aber weiterhin, dass man versuchen sollte, wenn möglich und "sinnvoll" auf Zeiger zu verzichten. 😉

    Vicious Falcon schrieb:

    Hintergrund: Nicht jeder entwickelt reine C++ Programme ein Leben lang mit der Konsole. Irgendwann ist der Punkt gekommen, sich mit den (C-) Funktionen des Betriebssystems auseinanderzusetzen. RAII ist hier sehr nett, aber um seine eigenen RAII-Klassen zu schreiben, muss man? Genau, nochmal das Posting lesen :).

    Oder am besten std::vector verwenden. Es gibt bereits viele fertig RAII Klassen in der Standardbibliothek und zukünftig noch mehr. Boost bietet auch eine Vielzahl an. Ich habe ehrlich gesagt schon länger nicht mehr mit Zeiger hantieren müssen, nur weil ich eine C Schnittstelle angesprochen habe. Höchstens habe ich vielleicht noch den Address-Of-Operator eingesetzt.

    int bufferSize = GetWndowTextLength(window_handle));
    std::vector<char> buffer(bufferSize);
    GetWindowText(window_handle, &buffer[0], buffer.size());
    

    Speicher kann man in C++ auch bei C Schnittstellen völlig über RAII verwalten. Höchstens für andere Ressourcen muss man eigene RAII Klassen einführen. Allerdings spricht man diese Ressourcen kaum über Zeiger an oder nur über versteckte Zeiger, sondern meistens geht dies über Handles. Man braucht auch kein new oder delete , usw. usf.

    Grüssli



  • Dravere schrieb:

    viel Richtiges

    Ja, statt eines int* verwende ich auch lieber vector<int>.
    Schaden tut es aber nicht, die Konzepte dahinter zu verstehen. Und wenn man es gewohnt ist, dass zu einem new immer ein delete gehört, dann weiß man auch, dass zu einem Anfordern eines Handles auch immer eine entsprechende Freigabe gehört.

    Aber das muss man ja alles nicht mehr können. Wir können ja einfach nur die Daten zwischen Standardbibiothek und boost umherschieben und nennen den Vorgang "programmieren". Grundlagen sind egal. 🤡


  • Mod

    Auch Handles darfst du gerne RAIIen.



  • Ich habe nichts anderes behauptet. Die Freigabe darf aber auch nicht in der RAII-Klasse vergessen werden.



  • Vicious Falcon schrieb:

    Ich habe nichts anderes behauptet. Die Freigabe darf aber auch nicht in der RAII-Klasse vergessen werden.

    Ich dachte, das wäre quasi per Definition so.


  • Administrator

    Vicious Falcon schrieb:

    Grundlagen sind egal. 🤡

    Man sollte sich fragen, was zu den Grundlagen gehört, bzw. in welcher Reihenfolge man es lernen möchte. RAII und std::vector gehören weit an den Anfang. new und delete, wie auch Zeiger, gehören weiter nach hinten. Sobald man zu diesen kommt, kann man nämlich am bereits gelernten aufzeigen, wie man damit am besten arbeitet. Nämlich eben RAII einsetzen und als Beispiel könnte man std::vector nennen.

    Du kannst jemanden RAII beibringen, ohne auf Zeiger oder Speicherverwaltung einzugehen. Daher kannst du ihm auch beibringen, dass er die Ressource freigeben muss.

    Grüssli



  • Dravere schrieb:

    ...hantieren müssen, nur weil ich eine C Schnittstelle angesprochen habe. Höchstens habe ich vielleicht noch den Address-Of-Operator eingesetzt.

    int bufferSize = GetWndowTextLength(window_handle));
    std::vector<char> buffer(bufferSize);
    GetWindowText(window_handle, &buffer[0], buffer.size());
    

    Jetzt sag aber bitte nicht, daß bufferSize compilezeitkonstant war. Das wäre nämlich ein Weg, mit vector Zeit wegzuwerfen. Der ist mir gar nicht eingefallen.



  • Dravere schrieb:

    RAII und std::vector gehören weit an den Anfang. new und delete, wie auch Zeiger, gehören weiter nach hinten.

    Da bin ich ganz anderer Meinung.



  • volkard schrieb:

    Dravere schrieb:

    ...hantieren müssen, nur weil ich eine C Schnittstelle angesprochen habe. Höchstens habe ich vielleicht noch den Address-Of-Operator eingesetzt.

    int bufferSize = GetWndowTextLength(window_handle));
    std::vector<char> buffer(bufferSize);
    GetWindowText(window_handle, &buffer[0], buffer.size());
    

    Jetzt sag aber bitte nicht, daß bufferSize compilezeitkonstant war. Das wäre nämlich ein Weg, mit vector Zeit wegzuwerfen. Der ist mir gar nicht eingefallen.

    Und wenn schon.. dann nimm halt das boost array oder tr1 array.


Anmelden zum Antworten