Problem mit CStringList
-
Hallo
Ich habe eine Anwendung, die alle Dateien einer Partition auf Veränderung untersuchen soll. Ich speichere also u.a. die Namen mit dem kompletten Pfad in einer Datei ab. Wenn nun die Untersuchung auf Veränderte/Neue Dateien erfolgen soll, wird zuerst diese Datei komplett eingelesen, und alle Dateinamen in einer CStringList abgespeichert. Hier fängt nun das Problem an:
Sind sehr viele Dateien auf der Partition, hängt sich das Programm an der Stelle auf, wo die Dateien in der Liste gespeichert werden.
Windows-Fehlermeldung "Nicht genügend Speicher".Anscheinend muss ich irgentwie mehr Speicher beim Start des Programm anfordern, o.ä.
Weiß jemand Rat? Bin für jeden Hinweis dankbar.
-
Du speicherst aber nur die Dateinamen und nicht auch die Inhalte der Dateien, oder?
-
Ja, natürlich. Das kann trotzdem leicht an die 20 MB werden. Bei den heutigen Festplattenkapazitäten...
Ab einer gewissen Anzahl Dateien, möglicherweise noch Systembedingt kommt es dann zum Absturz.
-
Weiss das keiner?
Macht euch doch mal eine Schleife von 1 bis 1.000.000, und fügt immer den gleichen String, möglichst irgentwas langes, der CStringList hinzu:
[cpp]
CStringList str_list;
CString string;
string="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";for(int t=0;t < 1000000;t++)
{
str_list.AddTail(string);
}evtl. die Schleife noch erhöhen. Irgentwann bleibt das Programm dann hängen. Kann man das nicht verhindern? Oder zumindest steigern?
-
Du musst doch nur irgendwo den Pfad und eine Checksumme zu der Datei speichern. Das sollte auch bei großen Verzeichnisstrukturen keine Speicherprobleme geben.