Methodenaufrufe, ohne dass zuvor ein Obj angelegt wird.



  • Ihr habt doch hier zwei unterschiedliche Situationen. Eine, in der das Objekt gültig ist, und eine, in der das Objekt nicht gültig ist. Dabei dürfte doch völlig egal sein, ob das Objekt POD oder nicht POD ist. Nur, dass bei PODs das Objekt bereits gültig ist, sobald der Speicher reserviert wurde.

    NonPodType* npt = 0;
    npt->feld = 10; // UB
    npt->methode(); // UB
    
    PodType* pt = 0xdeadbeef;
    pt->feld = 10; // UB
    pt->methode(); // UB
    
    NonPodType* npt2 = new NonPodType();
    npt2->feld = 10; // ok
    npt2->methode(); // ok
    
    PodType* pt2 = (PodType*) malloc(sizeof(PodType)); // man verzeihe mir das C-gefrickel
    pt2->feld = 10; // ok
    pt2->methode(); // ok
    


  • @LordJaxom: richtig.


  • Administrator

    LordJaxom schrieb:

    Ihr habt doch hier zwei unterschiedliche Situationen. Eine, in der das Objekt gültig ist, und eine, in der das Objekt nicht gültig ist. Dabei dürfte doch völlig egal sein, ob das Objekt POD oder nicht POD ist. Nur, dass bei PODs das Objekt bereits gültig ist, sobald der Speicher reserviert wurde.

    Ursprünglich gab es nur eine Situation und zwar wenn das Objekt noch nicht gültig sei. Mitleid hat in diesem Kontext dann auch nachgefragt, wie das bei PODs sei. Erst hustbaer hat da eine andere Situation reingebracht, welche etwas für Verwirrung sorgte 😉

    Aber so wie du es zusammengefasst hast, sehe ich das auch.

    Grüssli



  • Auch richtig. Die andere Situation hab' ich reingebracht, weil die ursprüngliche Frage für mich ziemlich klar war.


Anmelden zum Antworten