CString -> Array -> Hoher Speicherbedarf -> ?Memleak?
-
Hallo, ich habe eine Frage bezüglich des Speicherns von CStrings in arrays!
Ich habe eine Applikation erstellt, die Arrays nutzt um CStrings zu speichern, jedoch scheint das sehr sehr speicher lastig zu werden was jedoch nicht Sinn der Sache ist!
Ich benutze 2 Typen von Arrays, zum einen CStrings, zum anderen Integer Arrays..
Stimmt es, dass ein CString erst nach beenden der Applikation wieder aus dem Arbeitsspeicher gelöscht wird? Wie kann ich diesen manuell löschen, da ich ihn nur einmal benötige?
delete[].. funktionier leider nicht, da ich in einer voil Funktion arbeite! Gibt es eine Speicherschonendere Möglichkeit als etwas in einem CString zu speichern was ca. 3000 - 5000 Mal angelegt wird? Ich benötige den Inhalt nur ein Mal!
Danke für eure Hilfe, bis dann!
-
cstrings verhalten sich genauso wie normale variablen..sag ma, wiegroß sind die arrays eigentlich?^^
-
Aufgebaut ist es folgendermaßen:
CString BeispielArray[5]..
das ca. 5 Mal und dann jeweils nocheinmal für 5000 einzelne clienten..
Wie kann ich denn einen CString manuell löschen?
bYe
-
CString ist , nehme ich an, eine MFC Klasse.
Generell werden Klassen erst zerstört wenn sie den Scope verlassen.Bei Dir also beim beenden des Funktionsblocks in dem sie Reserveirt wurden.
Schau mal ob Du Dich nicht mit vector<CString> anfreunden kannst (oder list<CString> wenn da viel löschen fällig wäre)
-
Anders geht es nicht?! Kann ich nicht einfach den CString per Befehl wieder löschen? Muss doch möglich sein oder nicht? Wie ist es denn, wenn ich mit Chars arbeiten würde, würde das die Speicherbelastung möglicherweise vermindern?
bYe
-
Wie ist es denn, wenn ich mit Chars arbeiten würde, würde das die
Speicherbelastung möglicherweise vermindern?dazu müsste man wissen wieviel overhead die Klasse CString mitbringt, vielleicht kann das einer aus dem Win Prog. Forum beantworten, aber allg. würd ich davon ausgehen das es mit chars etwas weniger Speicher verbraucht
bye
tt
-
Ich würde bei den strings auf std::string zurück greifen,
denn die Datenhaltenhaltung sollte immer von der Oberfläche getrennt sein.
mit c_str() bekommt man sie dann auch wieder in ein MFC gängiges
Format. Als Container vector<string> oder list<string>, damit immer
nur soviel reserviert ist wie benötigt, fertig.Devil