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

Anonymous

unregistriert

1

14.10.2003, 21:29

MemAlloc - new

Was ist eigentlich der Unterschied zwischen MemAlloc und dem new - Operator? Tun die nicht das gleiche?

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

2

14.10.2003, 21:43

jain.

malloc und free (und ihre Variationen) kennen nichts über Konstruktoren und Destruktoren.

Einfaches Bespiel:

string *stringArray1 = static_cast<string*>(malloc(10*sizeof(string)));

string *stringArray2 = new string [10];

stringArray1 zeigt zwar auf einen genügend großen Speicher, um zehn string-Objekte aufzunehmen, aber keiner dieser strings wurde konstruiert! Kurz: sie wurden nicht initialisiert durch einen Constructor oder bei free durch einen Destruktor freigegeben! Anders sieht es bei new aus: Das Stringarray wurde per Constructor initialisiert und wird per delete wieder deinitialisiert durch den Destructor, was free nicht macht.

Kurz: new/delete bevorzugen als malloc/free.

Tschüüüs, :angel:
Patrick

Anonymous

unregistriert

3

15.10.2003, 22:13

Solche Antworten kann ich nur loben. THX!!!

4

15.10.2003, 22:32

New is bloss Malloc mit ZeroMemory wenn du so willst (und bei Klassen hat der Konkstruktor)

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

5

15.10.2003, 22:50

@deadlus:
np, über ein Lob freut man sich gerne ;D

@ghostie:
Primitiv gesagt :) ja, aber das bleibt unter uns ;D;D;D;D

Anonymous

unregistriert

6

20.10.2003, 00:33

den Rückgabewert von malloc darf man nicht casten.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

7

20.10.2003, 00:48

denn muss man doch casten? Ich mein malloc erstellt doch sonst nur einen void* und kein Objekt von string* ?

Anonymous

unregistriert

8

20.10.2003, 11:24

Okay, sorry.

Meine Aussage galt nur für C und nicht für C++. :angel:

Unter C funktioniert nämlich:

Quellcode

1
2
3
4
5
6
#include <stdlib.h>

int main()
{
    int* p = malloc(sizeof(int));
}

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

9

20.10.2003, 11:46

wie erstellste denn ein Objektarray mit malloc?

z.B.

Quellcode

1
2
3
4
struct MyStruct
{
....
}

Da muss man doch casten, oder seh ich das falsch?

Anonymous

unregistriert

10

20.10.2003, 12:12

Wie gesagt, in C brauchst du KEINEN cast, in C++ schon. Aber da man malloc in C++ nicht verwendet, ist es doch egal. ;-)

Werbeanzeige