Problem mit sehr großen Dateien: Programm zum schreiben zwingen?



  • Hm, kannst Du ein paar genauere Infos rausgeben?

    Welcher Compiler, welche STL?
    Kannst Du die Datei zum Beispiel Zeile für Zeile kopieren?
    wenn das geht hast Du möglicherweise irgendwo ein Speicherloch.

    MfG Jester



  • compiler: microsoft visual studio 6.0

    "Kannst Du die Datei zum Beispiel Zeile für Zeile kopieren?
    wenn das geht hast Du möglicherweise irgendwo ein Speicherloch. "

    Das verstehe ich nicht, ich öffne eine Datei, die wie gesagt sehr groß sein kann, und teste sachen durch. Z.b. teste ich ob die differenz der zeiten über 3 sekunden geht:

    30
    32
    37 <--- fehler, loggen
    38

    Ich lese also zeilenweise und wenn ich was finde schreibe ich das gleich ins log. Nur momentan passiert es wohl nicht wirklich sofort, sondern erst wenn ich die datei wieder schließe die ich zum lesen geöffnet hatte.



  • die frage war, ob du zb irgendwo ein new ohne delete hast, denn die buffer der STL arbeiten eigentlich recht zuverlässig



  • Nein, nur das object welches mit den methoden die dateien bearbeitet wird per new erstellt, ansonsten wird nirgendwo new verwendet 😞



  • Also ich hab hier ne anwendung laufen, die Nachrichten auf nem CAN Bus mitprotokolliert, und die im XML format auf die platte streamt.

    der stream ist nen normaler ofstream gepuffert !!! .....

    Unsere Kollogen nutzen das aber (sagen wir mal nicht unbedingt wie vorgesehen) fuer dauermessungen und loggen den kompletten bus ( ca 1000 Nachrichten pro sekunde, nutzdtenlaenge 8 byte) uebers wochenende.

    Der speicher ist nur 512 mb gross ... die grenze (und das vorzeitige aus) setzt aber immer der festplatte ... 😃

    15 GByte gezippt, war das groesste was ich mal als response bekommen hab 🙂
    rat mal wie gross das wird wenn mans auspackt 🙂

    Klar laesst sich nun ueber den sinn und unsinn von XML da streiten, aber es zeigt zumindest, das man mit VC++ 6.0 ,der darin enthalten STL auch streamen kann, ohne speicher zu verlieren ....

    Ich wurd auch vermuten, das dein Fehler woanders zu suchen ist ....

    Ciao ...



  • @problem3000:

    kannst Du mal etwas Source zeigen?



  • ok, wieder geloescht ...

    Ups, hab ich falsch gelesen ...



  • Ähem... ich hatte nicht umsonst @problem3000 davorgeschrieben.



  • @Jester

    Ja, werde ich machen, vermutlich aber erst Montag da ich gerade die Anwendung an kritischen Stellen überarbeite damit sie schneller ist.
    Dann werde ich am Montag einen erneuten Test starten und dann hier was posten falls das Problemdann immer noch besteht.



  • problem3000 schrieb:

    Es kann vorkommen das ich mit meinem Programm Dateien einlesen muss die z.B. 700mb - mehrere Gigabyte groß sind.

    null problemo. das geht in c++ ideal. dein prog kann 700mb einlesen und rausschreiben und ist dabei nur unwesentlich langsamer, als wenn du 700mb einfach mit copy oder durch den explorer kopieren würdest. und vor allem wird es niemals deutlich lahmer wegen speichermangel oder so, sondern bleibt einfach in der größenordnung von copy.
    wenn es bei dir zicken macht, gibts den naheliegenden grund: hast ein speicherlock oder sowas in deinem prog.
    den schlimmen grund: die platte ist am abkacken. fasse sie mal mit der hand an, wenn sie so spinnt. ist sie brutal heiß?
    den seltsamen grund: hast den indexdienst von winxp an, der depp verucht auch deine logdateien zu indizieren, was ihm nicht gut bekommt.


Anmelden zum Antworten