komisches new



  • Hallo,

    hab mal zu testzwecken sowas gemacht:

    #include <iostream>
    using namespace std;
    
    int main() {
      int* ptr = new int(3);
    
      // Irgendwas
    
      ptr = new int(5);
    }
    

    Wenn ich jeweils die Adressen von ptr vergleiche, kommt genau das selbe raus. das heißt, der erste und der zweite int liegen an der selben stelle.
    Was wiederum heißen würde, dass der erste int gelöscht wurde, als der zweite erstellt wurde.

    stimmt das, das das zweite new int() das erste löscht?



  • Nein, das ist nicht so. Ist da vielleicht noch ein delete dazwischen?



  • Braunstein schrieb:

    Nein, das ist nicht so. Ist da vielleicht noch ein delete dazwischen?

    oh... ja natürlich 😃

    danke



  • Warum probierst du es nicht einfach?

    daersc schrieb:

    #include <iostream>
    using namespace std;
    
    int main() {
      int* ptr = new int(3);
    strcpy (ptr, "12");
    
    int *tmp = ptr;
      // Irgendwas
    
      ptr = new int(5);
    strcpy (ptr, "3456");
    
    std::cout << "1:" << tmp << "\t2:" << ptr << std::endl;
    delete tmp;
    delete ptr;
    }
    

    und, was kommt raus? 😛

    bb



  • ja ich habs ja probiert und dabei ein delete irgendwo versteckt, ohne darauf zu achten, dass das ja das ergebnis verfälscht


Anmelden zum Antworten