Zitat von
PAX:
das heißt, wenn ich die freigabe vergesse und das programm irgendwann beendet wird, dann "bleibt" diese speicherlücke bis zum computerneustart?
So ungefähr jo. Kann sein, dass Windows da irgendwann nochmal aufräumt, aber davon sollte man nicht ausgehen...
Jo.
Zitat:
und nochmal zum ansistring: wenn ich solch einem bezeichner nun eine 23 byte-zeichenkette zuweise, wie viel byte wird dann verbraucht? 23 oder dann doch mehr?
23 Byte Daten + 4 Byte Pointer + ? Byte Referenzzählung
Zitat:
der grund, warum ich solche fragen stelle ist, dass ich wissen möchte, was genau vorgeht und wie stark ich mein programm somit verhunze, wenn ich mehrere ansistrings und unsigned long long-typen deklariere(n muss)...
AnsiStrings(bzw. Strings in Delphi) kannst du im Prinzip so viele nutzen, wie du lustig bist. Mach dir da gar keine Gedanken. Die Zeiten, wo man wirklich auf jedes Byte
RAM aufpassen musste sind (zumindest für die Windows-Entwicklung) nun endgültig vorbei... Bevor du darüber nachdenkst ob du hier Speicher sparen kannst, hast du die komplette
VCL umgeschrieben...
Auch bei unsigned long long(~ Int64 in Delphi) brauchst du dir da keine Gedanken machen. Wobei man die sowieso extrem selten braucht...
Der Einzige Grund warum man sich darüber Gedanken machen kann, is Geschwindigkeit. (
Ansi)Strings sind etwas langsamer als PChar bzw. char *. Wenn du ne Funktion hast, die n paar Tausend Mal aufgerufen wird, kannst du dir überlegen, ob du das nicht schneller hinkriegst, ansonsten brauchst du dir da auch keine Gedanken machen...
mfg
Christian