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

11

26.06.2014, 13:02

Weil ich keine überflüssigen Daten im Speicher rumfliegen haben will?

Wenn ich die Daten einfach von einem Feld auf das andere kopiere habe ich dann zwei Felder mit den selben Daten im Speicher. Es ist zwar richtig dass es an sich für die korrekte Funktion des Programms keine Rolle spielt da alle Funktionen für die der Status des Feldes relevant ist über die bool-Variable "Besetzt" gesteuert werden, aber es erscheint mir nicht sauber die Daten einfach zu duplizieren. Mein Ziel wäre eigentlich schon ein Verschieben der Daten von einem Feld auf ein anderes.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

12

26.06.2014, 13:05

Durch das "Löschen" sparst du keinen Speicher, das dürfte dir klar sein.
Schau dir mal memset an, damit kannst du einen Speicherbereich komplett mit einem Byte-Muster (auch Nullen - was du möchtest) füllen.
Dann könntest du auch gleich memcpy benutzen, um die Einträge zu verschieben, anstatt "mühsam" jedes einzelne Element zu kopieren.

13

26.06.2014, 13:13

OK, schau ich mir mal an.

Aber warum spare ich keinen Speicher? Sagen wir ich habe für die Variable "Bestand" einen Wert von 100000 erfasst, dann braucht das doch mehr Speicher als wenn die Variable auf 0 steht. Dass immer Speicher belegt wird ist mir so weit klar, aber es wird doch einen Unterschied machen je nach Wert der eingegeben wurde (mehr Zeichen brauchen mehr Speicher). Oder mache ich da einen Überlegungsfehler?

Eine andere Geschichte sind dann natürlich vordefinierte Arrays, z.B. "ME" welches als "char ME[10]" definiert ist. Da werden ja dann nach meinem Verständnis einfach immer 10 Zeichen reserviert, egal ob die genutzt werden oder nicht. Somit wäre das löschen dieser Variable nach dem Umschreiben wirklich nur reine Kosmetik.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

14

26.06.2014, 13:19

Aber warum spare ich keinen Speicher? Sagen wir ich habe für die Variable "Bestand" einen Wert von 100000 erfasst, dann braucht das doch mehr Speicher als wenn die Variable auf 0 steht. Dass immer Speicher belegt wird ist mir so weit klar, aber es wird doch einen Unterschied machen je nach Wert der eingegeben wurde (mehr Zeichen brauchen mehr Speicher). Oder mache ich da einen Überlegungsfehler?

Ich sehe keine Variable Bestand, ich gehe mal davon aus, dass du Menge meinst.
Diese hast du als int deklariert. Der braucht 4 Bytes an Speicher*, völlig egal welcher Wert drin steht. Du kannst darin Werte zwischen -2147483648 und 2147483647 speichern.
Zahlenwerte werden auch nicht als Text gespeichert, sondern binär mit Bits.

* Wie groß ein int ist, hängt von der Plattform ab, aber meistens sind es 4 Bytes.

15

26.06.2014, 13:44

Ach so, jetzt ist klar. Danke für die Erklärung :)

Ja ich meinte Menge, der Bestand ist ja dann der ganze Datensatz...

Werbeanzeige