Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

1

26.08.2007, 21:52

malloc() -> new | free() -> delete | realloc -> ???

Hallo ich bins mal wieder...

Ich habe ein bisschen was über malloc, free und realloc gelesen
abe aber noch nicht so ganz den durchblick...

Habe ich des richtig verstanden das new das c++
Gegenstück zur C function malloc
und delete zu free() ist ?
Was ist dann das Gegenstück zu realloc ?
Oder muss man sich das selber schreiben ?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

26.08.2007, 22:40

Das ist alles nur halb korrekt:

Die Funktion operator new ist das Gegenstück zu C's malloc. Der Operator new ruft diese auf und erledigt zusätzlich noch einige andere Dinge, z.B. das Aufrufen des Konstruktors.

Ähnlich ist das auch beim Operator delete. Der ruft die Funktion operator delete auf, was als Gegenstück zu C's free angesehen werden kann, um den Speicher freizugeben und zusätzlich wird der Destruktor des Objekts aufgerufen.

Für realloc gibts keine equivalente Funktion in C++. Das musst du tatsächlich selbst implementieren. Ist aber auch nicht besonderst kompliziert.
@D13_Dreinig

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

3

26.08.2007, 22:54

Ok :D

Vielen Dank 8)

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

4

27.08.2007, 20:58

Allerdings verwendest du in der Regel irgendweche Container, so dass du dich nicht wirklich selbst drum kümmerst.
Why is 6 afraid of 7?
Because 7 8 9

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

5

28.08.2007, 19:34

Sry hab aber noch mal ne frage

wenn ich realloc in c++ machen möchte... also selber schreiben,
dann muss ich doch nur neuen speicherplatz mit NEW resavieren
alles hinübercopieren und den alten speicher wieder löschen oder ?

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

6

28.08.2007, 19:43

das würde auf jeden fall funktionieren, ja.
"Don't trust your eyes: They are a hell of a lot smarter than you are"

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

7

28.08.2007, 20:00

Gibt es denn noch bessere möglichkeiten ???

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

28.08.2007, 20:07

Die Container der STL verwenden! :)
@D13_Dreinig

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

9

28.08.2007, 20:38

Schau dir mal std::list und std::vector an. für speziellere zwecke ist std::map auch ganz gut.


Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

28.08.2007, 20:45

In dem Fall sollte nur std::vector als "Ersatz" in Frage kommen.
@D13_Dreinig

Werbeanzeige