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

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

11

13.11.2004, 23:39

MarkusS, gute Beschreibung. Kurz gefasst:
Variante 1 wenn möglich, 2 wenn nötig.

Übrigens hatte mal vor längerem mit meinem 3D Editor Probleme mit Speicherfragmentierung. Um das zu untersuchen habe ich dann ein Programm geschrieben, was absichtlich den Speicher stark fragmentiert. Nachdem es 64kB alloziert hatte, waren die 128MB Speicher praktisch voll :-D . Das war unter WinNT4.
"Games are algorithmic entertainment."

MarkusS

Frischling

Beiträge: 3

Wohnort: Püttlingen

Beruf: Softwareentwickler

  • Private Nachricht senden

12

13.11.2004, 23:47

Zitat von »"Dave"«

bei der 2. variante hat man aber die controlle über die "lebensdauer" seines objektes. wenn ich mein objekt auch noch außerhalb der erstellenden funktion verwenden will, komme ich doch um die 2. variante nicht rum. es sei denn ich arbeite nicht mit zeigern, sondern mach mir ne komplette kopie. was ist besser?


Osram hat's auf den Punkt gebracht: Variante 1 ist schöner, aber manchmal kommt man halt um Variante 2 nicht herum. Das hängt halt von der jeweiligen Anwendung ab.

@Osram: Ist heftig, wie viel die Verwaltungsinfo ausmachen, nicht? Das kann man leicht unterschätzen. Und starke Fragmentierung führt zu heftigen Problemen. Ich musste vor Jahren mal meinen eigenen new-Opertator schreiben, weil der Borland-Compiler bei den vielen Objekten schlapp gemacht hat.

Ist übrigens ein Vorteil von C# bzw. .NET, der gerne verschwiegen wird: Der Heap funktioniert dort wie der Stack in C(++): Zum Allokieren wird einfach ein eine Art Framepointer verschoben. Dadurch geht das Allokieren rasend schnell. Der Garbage Collector sucht dann einfach die Objekte, auf die keine Referenz mehr zeigt, entfernt diese und schiebt den Rest wieder zusammen.

OK, damit bin ich wohl enttarnt, ich bin der Gast aus dem VS.NET unter Win98-Thread ^_^ Der gute David hat mich inzwischen freigeschaltet.

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

13

14.11.2004, 11:14

danke.

Werbeanzeige