Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 02.07.2008, 13:27 Titel: Grundsätzliche "Anfängerfrage" zu Pointer |
|
|
Auch wenn ich schon einige Zeit Freebasic programmiere kommen mir in ruhigen minuten immer wieder, mehr oder weniger, wichtige, grundsätzliche fragen in den Kopf:
Wenn man eine Variable als Integer dimensioniert, dann wird im Speicher der Platz dafür reserviert. Im Falle von Integer 32bit bzw 4byte.
Wie und wo sich der Rechner die Adresse dieser Variable speichert ist unerheblich weil der Programmierer eigentlich nie wirklich damit zu tun hat, ausser wenn er einen pointer auf diese Variable erstellen will.
Man kann aber auch "dynamisch" zur laufzeit Speicher "auf dem Heap(?)" reservieren. Dabei ist dem Rechner egal für welchen datentyp dieser Speicher verwendet wird, hauptsache die variable passt in den reservierten bereich.
OHNE die Adresse zu diesem reservierten Bereich wird der Speicher bis zum beenden des Programms nicht wieder frei gegeben und ist "verloren".
Um diesen Bereich nutzen zu können benötigt man einen Pointer der auf diesen Bereich zeigt.
Aber auch so ein pointer benötigt Speicher. So ein Pointer ist, wenn ich mich recht erinnere eine Integer-Variable die die Adresse des reservierten Speichers enthält.
Jetzt meine frage:
Der Gesamt-Speicherverbrauch für den Pointer und den reservierten Speicher für EINE Integer-Variable beträgt dann tatsächlich 8Byte??
Und wenn ich eine "normale" Integer variable dimensioniere verbraucht der Rechner dafür tatsächlich "nur" 4 byte? |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 02.07.2008, 14:11 Titel: Re: Grundsätzliche "Anfängerfrage" zu Pointer |
|
|
OneCypher hat Folgendes geschrieben: |
Jetzt meine frage:
Der Gesamt-Speicherverbrauch für den Pointer und den reservierten Speicher für EINE Integer-Variable beträgt dann tatsächlich 8Byte??
|
Ja.
Zitat: |
Und wenn ich eine "normale" Integer variable dimensioniere verbraucht der Rechner dafür tatsächlich "nur" 4 byte? |
Ja. Nach Adam Riese  _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 02.07.2008, 14:20 Titel: |
|
|
Hi,
FBC oder besser der Assembler AS, arbeitet anders mit den Daten.
Z.B. aus einem von FBC erstellten Quellcode
Code: | a=399 'mov dword ptr [ebp-87860], 399
...
If a > 100 Then 'cmp dword ptr [ebp-87860], 100
'jle .Lt_0015
...
|
Noch ein Beispiel für Double-Variable:
Code: | ...
fmul qword ptr [_Lt_0021]
fadd qword ptr [_Lt_0022]
fistp dword ptr [ebp+ecx-97604]
....
.section .data
.balign 8
_Lt_0021: .double 30.55
.balign 8
_Lt_0022: .double -14.76 |
Entweder er legt die Variablen auf dem Heap an oder im data-Bereich.
Adressen werden indirekt|direkt angegeben.
Wenn du natürlich einen Pointer dimensioniers (DIM AS ANY PTR ...) und einen Wert zuweist wird dafür auch Speicherplatz reserviert. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|