Es gibt 2 arten von Speicher, die ein Programm benutzen kann. Einmal den Stack und einmal den Heap.
Wenn du jetzt sagst:
Code:
int i=3;
Dann wird Speicher aus dem Stack genommen.
Wohingegen
Code:
int *i = new int;
Speicher auf dem Heap reserviert.
Für Variablen in einer Funktion ist macht es keinen großen Unterschied ob jetzt heap oder stack. Der Stack wird hier bevorzugt, dass es doch einfacher ist mit normalen Variablen umzugehen als mit Zeigern.
Wenn du jedoch große Datenmengen brauchst, oder dynamischen Speicher brauchst (also zb anhand von Benutzereingaben Variablen erstellt werden), dann kommst du um den Heap nicht rum.
Außerdem ist der Stack meistens arg begrenzt (afaik 2MB oder so), während der Heap quasi unbegrenzt ist (RAM + Auslagerungsdatei). Wenn man sich jetzt mal überlegt, dass eine Textur schon mal einige MB an speicher brauchen kann, dann fällt der Heap ja sowieso schonmal flach.
Außerdem lassen sich interfaces besser mit Zeigern realisieren (in Irrlicht arbeitest du nur mit interfaces. Das heißt du weißt zwar welche Funktionen es gibt, aber du siehst von außen nicht, wie die genau implementiert sind, was du auch nicht brauchst)
Und noch ein Unterschied Heap/Stack. (Wobei das eher Halbwissen meinerseits ist. Ich geb also keine Garantie das das stimmt)
Du kannst nur vom Stack in der Reihenfolge lesen, wie geschrieben wurde. Das muss dich als C++ programmieren nicht kümmern, weil sich der Compiler darum kümmert. Aber im Prinzip bedeutet das, dass du solange vom Ende des Stacks richtung anfang gehen musst, bis du deine Variable gefunden hast. Das kostet natürlich Zeit. Wohingegen man auch aus der mitte des Heaps lesen kann, ohne vorher durch den gesamten Heap zu gehen.
Stack = dt. Stapel, Heap = dt. Haufen. Und genau so kannst du dir das auch vorstellen. Wenn du den unteren Stein aus einem Stapel haben willst, dann musst du ja erstmal alle anderen Steine, die darüber sind zur Seite legen. Während du bei einem Haufen Steine einfach reingreifst und dir den passenden herausnimmst.
_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain