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

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

1

28.03.2011, 13:05

Speicherproblem beim 2D Array -_-

Servus zusammen,

habe ein Problem beim Laden meines Spielfeldes ^.^ Meine Map wird aus einer Datei in ein Array geladen und ist zur Zeit ca. 80x80 groß. Jetzt wollt ich die Map für die 3 anderen Ansichten umrechnen bekomme aber die Meldung das mein Speicher voll ist, da ich ja nun 4 Arrays habe -_-

Nun habe ich mir überlegt einfach 4 mal ein 20x20 Array zu erstellen (mehr Felder passen ja eh nicht auf den Bildschirm) und dan beim Bewegen die Arrays zu aktualisieren...
Aber so müsste ich bei jeder Bewegung der Kamera, die neuen Daten aus der Datei lesen und für alle Ansichten umrechnen :O

Wie wird das normalerweise gelöst ? oO

lg
SD
...

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

2

28.03.2011, 13:14

80x80 ist lachhaft klein, selbst fuer einen C64. D.h. du machst etwas grundlegendes falsch.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

28.03.2011, 13:15

Ich versteh dein Problem nicht ganz, was genau ist das für eine "Meldung das dein Speicher voll ist"!? Zeig vielleicht etwas Code.

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

4

28.03.2011, 13:25

bin in der Schule wird daher mim code posten etwas schwer, ist aber ca. so aufgebaut:

struct Feld
{
int hoehe;
int besetzt;
int typ;
int textur;
etc.
}

maploader::maploader()
{
Feld feldernordausrichtung[x][y];
....
}

in maploader werden halt die Felder aus der Datei gelesen und in das Array gepackt. Meine Testmap ist 80x80 Felder groß (nur zu testzwecken, die eigentliche Map wird sicherlich nicht kleiner als 1kx1k sein).
erstelle ich nun so 4 arrays ist der Speicher voll :(
...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

28.03.2011, 13:28

Was heißt "der Speicher ist voll"!?

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

6

28.03.2011, 13:35

Vermutlich, das der Stack nicht ausreicht. Pack das Array auf den Heap.

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

7

28.03.2011, 13:55

so endlich zu haus ^^ also:

Genaue Fehlermeldung:
Eine Ausnahme (erste Chance) bei 0x0020af37 in test.exe: 0xC00000FD: Stack overflow.
Unbehandelte Ausnahme bei 0x0020af37 in test.exe: 0xC00000FD: Stack overflow.


und was ist mit Heap gemeint ? habe in letzter Zeit nur in Java programmiert, da gabs sowas (glaube ich) nit ^.^
...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

28.03.2011, 14:07

klick mich

Der Fehler kann alle möglichen Ursachen haben, aber ich würde auch mit TGGCs Diagnose gehen. In Java gibts genauso einen Heap und du verwendest ihn dort ständig (new und so)...

Ich würd dir empfehlen dein Spielfeld in einem 1D Array abzulegen, verwend dazu einfach std::vector, dann brauchst du dich nichtmal selber um den Speicher zu kümmern.

Werbeanzeige