Frage zu "void*" und "delete[]" ;) -->



  • Aziz schrieb:

    Seid ihr synchronisiert? 😃

    *g*
    Ich war 13 Sekunden zu langsam. 😉



  • Beispiel für Verwendung von void**:

    STDAPI CoCreateInstance(
      REFCLSID rclsid,     //Class identifier (CLSID) of the object
      LPUNKNOWN pUnkOuter, //Pointer to whether object is or isn't part 
                           // of an aggregate
      DWORD dwClsContext,  //Context for running executable code
      REFIID riid,         //Reference to the identifier of the interface
      LPVOID * ppv         //Address of output variable that receives 
                           // the interface pointer requested in riid
    );
    

    für void* fällt mir aber auch nichts passendes ein.



  • zu 1: thx. War mir klar dass man mit delete[] nur mit new vom Heap geholtes freigibt aber hätt ja sein können dass man auch stack-speicher freigeben kann wenn man den speicher nciht bis zum Funktionsende behalten muss.

    zu 2: hast sich erledigt. Ich ahtte ca 50 zeilen drüber ein "}" vergessen. Der dumme Compiler (borland 5.5) hat den Fehler komischerweise gaanz falsch gemeldet..

    ---------------------------------------------

    Da ich aber ein echter Seppel bin, der nun von garnichts Ahnung hat, habe ich noch 1 Zusatzfrage so mittendrin:

    1. "a" liefert einen konstanten char-Pointer. Was liefert 'a'???



  • char foo = 'a';
    

    meinst du das?
    'a' ist ein character (char).



  • Yeeahhh kapiert.
    Hey man ich bin der Checker...

    Danke.



  • War mir klar dass man mit delete[] nur mit new vom Heap geholtes freigibt

    ⚠
    Achtung! Mit delete[] nur Speicher löschen, der mit new[] geholt wurde und mit delete nur löschen was mit new gehol wurde

    🙄



  • ...hehe.



  • kingruedi schrieb:

    ⚠
    Achtung! Mit delete[] nur Speicher löschen, der mit new[] geholt wurde und mit delete nur löschen was mit new gehol wurde

    und nicht auf die idee kommen, statt new T nur mehr new T[1] zu verwenden, "weil man dann immer delete [] verwenden kann".



  • War das ironisch oder wieso sollte man das nicht machen?

    MfG Eisflamme; Ahnung von gar nichts



  • 1.) "1" wird irgendwo mitgespeichert
    2.) undefiniertes verhalten:

    struct Foo {
      virtual ~Foo () {}
    };
    
    struct Bar : Foo {};
    
    //...
    Foo *f = new Bar[1];
    delete [] f;
    

Anmelden zum Antworten