AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer SizeOf

Ein Thema von dr. love · begonnen am 12. Feb 2007 · letzter Beitrag vom 14. Feb 2007
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Pointer SizeOf

  Alt 12. Feb 2007, 21:18
Zitat von dr. love:
also hab ich keine chance an die größe des aktuell belegten speichers zu kommen oder wie is das?
Also wenn du den gesamten Speicher haben willst, kannst du das benutzen (hab ich schnell gebastelt)

Delphi-Quellcode:
function GetAllocatedHeap: Integer;
begin
  Result:=GetHeapStatus.TotalAllocated;
end;
Die Größe einer Klasse kriegst du mit Delphi-Referenz durchsuchenTObject.InstanceSize. Die eines dynamischen Arrays berechnest du einfach, indem du die Länge mit der Größe des Typen multiplizierst. Die eines dynamischen Strings einfach mit length().
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#12

Re: Pointer SizeOf

  Alt 13. Feb 2007, 07:15
Zitat von dr. love:
Also, mit SizeOf() kann man ja die Größe einer Variable oder den von einem Zeiger reservierten/eingenommenen Speicherplatz herausbekommen.
Falsch.
SizeOf hat mit dynamisch alloziiertem Speicher nichts am Hut. SizeOf() liefert die Groesse eines Typs oder einer Variable. Es wird zur Compile-Zeit ausgerechnet. SizeOf(Pointer) ist also immer 4 egal wohin der Zeiger zeigt.
Auch Methoden-Zeiger haben die Groesse 4. Sie zeigen nur auf ein Record das zwei weitere Zeiger enthaelt. Dieses Record hat dann die Groesse 8.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#13

Re: Pointer SizeOf

  Alt 13. Feb 2007, 07:56
Hallo Robert,

Zitat von Robert Marquardt:
Auch Methoden-Zeiger haben die Groesse 4. Sie zeigen nur auf ein Record das zwei weitere Zeiger enthaelt. Dieses Record hat dann die Groesse 8.
Andreas sieht das offenbar anders.

Gruß Hawkeye
  Mit Zitat antworten Zitat
dr. love

Registriert seit: 10. Jan 2007
92 Beiträge
 
#14

Re: Pointer SizeOf

  Alt 13. Feb 2007, 08:37
Hmmm... ich glaub ihr kommt grad vom Thema weg...
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Pointer SizeOf

  Alt 13. Feb 2007, 12:48
Zitat von Robert Marquardt:
Zitat von dr. love:
Also, mit SizeOf() kann man ja die Größe einer Variable oder den von einem Zeiger reservierten/eingenommenen Speicherplatz herausbekommen.
Falsch.
SizeOf hat mit dynamisch alloziiertem Speicher nichts am Hut. SizeOf() liefert die Groesse eines Typs oder einer Variable. Es wird zur Compile-Zeit ausgerechnet. SizeOf(Pointer) ist also immer 4 egal wohin der Zeiger zeigt.
Auch Methoden-Zeiger haben die Groesse 4. Sie zeigen nur auf ein Record das zwei weitere Zeiger enthaelt. Dieses Record hat dann die Groesse 8.
Probiers mit sizeof aus. Ein Methodenzeiger hat 8 Byte, 4 Byte für die Instanz, 4 Byte für die Methodenadresse.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#16

Re: Pointer SizeOf

  Alt 13. Feb 2007, 13:06
Das ist nicht der Methodenzeiger, sondern das Record selbst. Es besteht also nur eine begriffliche Verwirrung.
  Mit Zitat antworten Zitat
dr. love

Registriert seit: 10. Jan 2007
92 Beiträge
 
#17

Re: Pointer SizeOf

  Alt 13. Feb 2007, 13:23
öhm, also sizeof liefert definitiv nicht den tatsächlcih belegten speicher zurück, sonst hätte ich dir frage ja niemals im forum stellen müssen... aber das is ja nu auch wurscht, man kann ja mit ein bissl mehraufwand ausrechnen wieviel speicher belegt wird (einfach die new/dispose vorgänge zusammenrechnen)
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Pointer SizeOf

  Alt 13. Feb 2007, 18:51
*hüstel*

http://www.delphipraxis.net/internal...=680958#680958

Da kannst du sämtlichen belegten Speicher mit der Funktion, die ich da geschrieben habe, ermitteln.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
dr. love

Registriert seit: 10. Jan 2007
92 Beiträge
 
#19

Re: Pointer SizeOf

  Alt 13. Feb 2007, 20:35
huuups... hatte ich mal wieder ganz übersehen. aber ermittelt das auch nur den von meiner anwendung belgetn speicher oder den ges geamten systems? (wenn ichs ausprobiert hätte eüßt ichs schon, aber ein programmierer darf auch faul sein^^)
danke nochma für den verweis
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Pointer SizeOf

  Alt 13. Feb 2007, 20:39
Natürlich nur den von deiner.

EDIT: Und auch nur den Heap, nicht den Stack.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz