Glocke hat geschrieben:ich will X Bytes Speicher reservieren. Normalerweise geht das ja mit malloc. Allerdings muss ich den Speicher dann mit free freigeben anstatt mit delete; oder?
Kann ich mit new auch irgendwie X Bytes reservieren ohne einen konkreten Typ anzugeben? Hintergrund ist, dass ich über einen Socket erst die Anzahl der Bytes bekomme und den Speicher adressieren will.
Du kannst einfach mit 'new char[ size ]' arbeiten oder mit malloc - es kommt am Ende das gleiche raus.
Glocke hat geschrieben:Naja ich hab mir angewöhnt die Pointer mit delete zu löschen weil ja ggf. noch ein Destruktur mit drinnen steckt. Bei free würde der ja nicht aufgerufen werden.
Wenn Du mit new char[] alloziierst wird auch kein Konstruktor gerufen! Du kannst nur serialisierte Daten übermitteln und musst diese dann wieder deserialisieren - also daraus auf der Empfängerseite neue Objekte erstellen.
Nebenher: Wenn Du ein Array von Objekten erstellst mit new class bla[], dann musst Du auch delete [] verwenden und nicht delete! delete ruft den Destruktor auf den gezeigt wird, delete [] für alle Elemente des Arrays!
Das gilt grundsätzlich auch bei new char[size], auch wenn der Destruktor für char nichts tut.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.