Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   problem: speicher is voll und prog läuft nich auf allen pcs (https://www.delphipraxis.net/88125-problem-speicher-voll-und-prog-laeuft-nich-auf-allen-pcs.html)

moppedfahrer 10. Mär 2007 16:23


problem: speicher is voll und prog läuft nich auf allen pcs
 
Hi
ich habe einen computerspieler für ein kleines brettspiel entworfen, habe aber folgende probleme:
1: bei jedem zug den ich mache knallt sich der arbeitsspeicher mehr und mehr voll (die auslagerungsdate war zum schluss nicht selten 400000K groß !?)

2: es läuft nur auf einigen pcs, obwohl es eine simple Konsolenanwendung ohne jederlei grafik, sound etc. ist ???

hängt das irgendwie zusammen ???

matashen 10. Mär 2007 16:48

Re: problem: speicher is voll und prog läuft nich auf allen
 
Kann es vielleicht seib, das du in deiner Anwendung den Speicher ständig neu Belegst(create) und dann aber vergistt den mit free wieder frei zu geben. Das wäre dann ein klassischer Fall von Memory-Leak.

Check mal ob du auch wieder alles freigibst!

Gruß Matthias

himitsu 10. Mär 2007 16:53

Re: problem: speicher is voll und prog läuft nich auf allen
 
Wieviel Speicher verbraucht wird, hängt nicht vom Anwendungstyp ab.

Die Ursache und eine passende Lösung kann dir allerdings keiner geben, denn

wie wissen nichts über dein Programm ... weder QuellCodes, oder hilfreiche Auszüge daraus, noch haben wir eine Ahnung was dein Programm überhaupt macht.

Ursachen kann es viele geben:
- dein Programm verbraucht einfach soviel Speicher
* (aber ohne Codes kann auch keiner nach Optimierungen suchen)
- du hast ein Speicherleck (gibt's also reservierten Speicher nicht wieder frei)
- ...


ach ja, wenn es nicht genug freien Speicher gibt und dein Programm dennoch welchen haben will, dann kann es schonmal nicht laufen.
(nicht jeder PC hat gleichviele freie Resourcen)

und "läuft nicht überall" ... was läuft nicht?
gibt's irgendwelche fehlermeldungen, oder ähnliches?

moppedfahrer 10. Mär 2007 18:15

Re: problem: speicher is voll und prog läuft nich auf allen
 
ok ich geb zu, dass ich ein bisschen unpräzise war ^^.
Also..
das programm kriegt einen string geliefert, der infos über den "zustand" des spielbrettes enthält.
das ergebnis einer berechnung ist dann wieder ein string, der den zug enthält.
ich habe mir klassen anelegt, die das spielbrett darstellen:

Delphi-Quellcode:
  TSpielbrett = class
  private
    Felder : Array [0..7,0..10] of TFeld;
  public
   ...
usw
Tfeld enthält dann die eigenschaften wie z.b. ob es besetzt ist oder nicht.
es gibt ein globales spielbrett. um einen zug zu finden kopiere ich mir dieses in ein lokales Tspielbrett der jew. prozedur und gehe dann daran meine kriterien ab.
aber am ende einer jeden prozedur mache ich auch wieder free.

das spiel läuft ähnlich wie mühle ... man muss erst setzen und dann ziehen.
beim setzten hab ich nie probleme, aber beim ziehen...

-entweder er schmiert sofort ab wenn er den ersten zug machen soll (project1.exe hat nen fehler festgestellt und muss beendet werden ... microsoft senden??? ja nein vielleicht)

-oder er schafft den zug (wie gesagt rechnerabhängig) und dann braucht er pro zug immer mehr speicher (manchmal gegen ende des spieles gibt es dann wieder einen sprung zurück... etwa von 350000K auf 40000K)

da ich noch nicht so lange dabei bin (1.5 jahre "Schul-Informatik"), bin ich relativ ratlos
ich habe die fehlermeldung bisher immer damit in zusammenhang gebracht, dass ich auf etwas zugreifen will, was es nicht gibt (z.b. TSpielbrett.Felder[8,11]), aber das bin ich auch schon mehrmals durchgegangen...

ich hoffe damit könnt ihr ein wenig mehr anfangen und mir vielleicht bei der lösung helfen ^^

Christian Seehase 10. Mär 2007 21:42

Re: problem: speicher is voll und prog läuft nich auf allen
 
Moin Moppedfahrer,

ohne Sourcen kann man da nur raten.
Entweder Du belegst Resourcen, die Du nicht wieder freigibst, oder es könnte auch sein, dass Du über die Arraygrenzen hinweg arbeitest.
Hast Du vielleicht einen try/except-Block im Programm, der eine Exeption abfängt, aufgrund derer Resourcen nicht mehr freigegeben werden?

Hador 10. Mär 2007 22:51

Re: problem: speicher is voll und prog läuft nich auf allen
 
Mit zimlicher Sicherheit hast du bei dir im Quellcode ein "schönes" Speicherleck eingebaut. Das heißt, du forderst Speicher an (Bspw. mit Create) und gibst ihn dann nie wieder frei. Wo genau dieses Speicherleck liegt können wir dir nur sagen, wenn du uns deinen Quellcode zeigst :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz