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

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

1

16.05.2007, 20:31

heap vs stack

hallo, hallo!

ich wollt mal fragen:
Ich hab mir eine klasse für ein terrain geschrieben...
was macht es für ein unterschied ob ich dann mein terrain per CTerrain* pTerrain = new CTerrain; oder CTerrain Terrain; deklariere?? ich mein jetzt perfomance-technisch und was is zu raten??

Danke Gruß
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

16.05.2007, 20:34

Je nachdem was für Daten Terrain beinhaltet...
@D13_Dreinig

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

3

16.05.2007, 20:40

naja, ein VertexBuffer, ein IndexBuffer, ne heightmap, ne lightmap,... was halt so dazu gehört...
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

16.05.2007, 20:43

Wenns viele Daten sind machts wahrscheinlich eher Sinn das ganze in den Heap zu packen.
@D13_Dreinig

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

5

16.05.2007, 20:45

ist der stack sonst langsamer? und gibts vielleicht ne genauere definition von "vielen"? :D achja, DANKE!
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

6

16.05.2007, 20:49

Wenns geht benutz den Stack.

Der Stack hat 1MB Speicher, das sollte bei dir aber locker reichen, da das im Grunde nur ein paar Pointer sind.

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

7

17.05.2007, 11:30

ok, und warum? was passiert eigentlich, wenn der stack voll ist? wird dann automatisch in den heap gepackt?
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

8

17.05.2007, 11:40

Ne, ich glaub dann kriegste ne Fehlermeldung :)

Zwei Nachteile vom Heap die mir so spontan einfallen sind:
- new / delete braucht mehr Rechenzeit als Erstellen auf dem Stack
- manche Leute vergessen gern mal ein delete wenn der Code länger wird :D

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

17.05.2007, 11:42

Zitat von »"grek40"«

Ne, ich glaub dann kriegste ne Fehlermeldung :)

Zwei Nachteile vom Heap die mir so spontan einfallen sind:
- new / delete braucht mehr Rechenzeit als Erstellen auf dem Stack
- manche Leute vergessen gern mal ein delete wenn der Code länger wird :D


Drum gibt es ja Smartpointer die dir sowas abnehmen! :-P Das schöne am Heap ist das er im Normalfall sehr viel mehr Speicher bietet als der Heap. Große Objekte sollten also immer auf dem Heap abgelegt werden.
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

17.05.2007, 11:50

Zitat von »"tnecniv"«

was passiert eigentlich, wenn der stack voll ist?


das nennt sich dann stack overflow ;)

kannste ganz schnell und einfach mal ausprobieren:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
int blub(int x)
{
  volatile int dummy = blub(x+1);
  return dummy / 2;
}

int main()
{
  return blub(0);
}


schönes zitat dazu:

Zitat von »"Scott Meyers"«

this is only entertaining the first million or so times.


gut. ich hab das jetzt selber nicht getestet und kenn auch keine benchmarks dazu, aber ich könnte mir vorstellen, dass der zugriff auf den stack unter umständen evtl. etwas schneller als beim heap sein kann. nur ist der stack begrenzt, der heap im vergleich dazu praktisch unbegrenzt.

Werbeanzeige