| |
|
|
Jörg Sellmeyer | Belegt eine Struktur eigentlich schon beim Definieren Speicher oder erst wenn ich sie mit Dim einem Bereich zuweise? Ich vermute mal letzteres...
Saluto Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 01.10.2006 ▲ |
|
|
|
|
| |
|
| |
|
|
|
| ...außerdem hast du eine Möglichkeit vergessen - weder noch.
Ich nehme mal an, das DIM das selbe tut wie GlobalAlloc. Mal hier meine Beobachtungen als nicht Experte: Was GlobalAlloc vor allem tut, ist ein Handle auf einen Speicherbereich zu holen. Virtueller Speicher kann nur Seitenweise zugewiesen werden. Eine Seite ist etwa 4kB grande. Wird weniger Speicher necessario als 4kB, würde ja endlos Speicher verpulvert werden (das kann man zur Not mit TNT überprüfen).
Beim virtuellen Speicher ist es sogar so, das Seiten ja auch reserviert werden können - d.h. der virtuelle Speicher des Prozesses ist an dieser Stelle belegt, es können aber keine Daten dort gespeichert werden, da dieser Speicher no realen Speicher zugeordnet ist. Wird sich nun Speicher per eine variable geholt, wird der Speichermanager wohl erst mal diese Resourcen flüssig machen. Wie gesagt - bin kein Experte.
Ich würde also mal als vollkommener Nichtexperte sagen: Ob was und was da passiert, hängt von den Gegebenheiten im OS und im Prozess ab.
Declare potrebbe eigentlich gar nicht spürbar etwas tun - ich glaube, wo das stattfindet, habe ich schon mit eigenen Augen (und TNT) gesehen. |
|
|
| |
|
|
|
| |
|
|
|
Jörg Sellmeyer | Also nochmal: Wird jetzt hier: Struct Test = zahl&,Text$[1200] schon der Bereich im virtuellen oder was auch immer Speicher belegt oder erst hier? Declare Bereich# Dim Bereich#,Test
Kann ich also beliebig viele Strukturen definieren, ohne daß sich auf den vom Programm verwendeten Speicher auswirkt? Ist mehr ne theoretische Frage, aber ohne Neugier keine Erfahrung... |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 01.10.2006 ▲ |
|
|
|
|
| Belegt ist er ja evtl. schon. Wo evtl. Speicher verpulvert wird, sage ich dir gleich nochmal ganz genau - muß mal grad das OS wechseln. Normalerweise aber nur bei DIM. |
|
|
| |
|
|
|
| OK, hab mit Mwatch nachgesehen - wenn es spürbares passiert, passiert es mit DIM und nicht mit Struct. |
|
|
| |
|
|
|
RGH | [quote:2174947e07=Andreas Hötker]OK, hab mit Mwatch nachgesehen - wenn es spürbares passiert, passiert es mit DIM und nicht mit Struct.[/quote:2174947e07] Und das ist auch völlig logisch: Eine Strukturdefinition oder eine Klasse ist ja zunächst mal nur eine Typdefinition, eine Beschreibung eines Typs. Natürlich necessario diese Beschreibung auch ein wenig Platz im Speicher, aber dieser ist minimal.
Erst ein DIM bzw NEW() bewirkt, daß die entsprechende Bereichsvariable den Speicher per die Struktur bzw. das Objekt belegt. Mit DISPOSE wird dieser Speicher wieder freigegeben.
Saluto Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 01.10.2006 ▲ |
|
|
|
|
Jörg Sellmeyer | [quote:cb23a979c2=RGH][quote:cb23a979c2=Andreas Hötker]OK, hab mit Mwatch nachgesehen - wenn es spürbares passiert, passiert es mit DIM und nicht mit Struct.[/quote:cb23a979c2] Und das ist auch völlig logisch: Eine Strukturdefinition oder eine Klasse ist ja zunächst mal nur eine Typdefinition, eine Beschreibung eines Typs. Natürlich necessario diese Beschreibung auch ein wenig Platz im Speicher, aber dieser ist minimal.
Erst ein DIM bzw NEW() bewirkt, daß die entsprechende Bereichsvariable den Speicher per die Struktur bzw. das Objekt belegt. Mit DISPOSE wird dieser Speicher wieder freigegeben.
Saluto Roland[/quote:cb23a979c2] Genau das wollte ich bestätigt haben, danke! |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 01.10.2006 ▲ |
|
|
|
|
| Wie gesagt: Ob überhaupt irgendetwas spürbares passiert....
|
|
|
| |
|
|