Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TMemoryStream -> SetSize (https://www.delphipraxis.net/155125-tmemorystream-setsize.html)

chaoslion 9. Okt 2010 22:39

Delphi-Version: 2010

TMemoryStream -> SetSize
 
Hey Leute,

wenn ich einem MemoryStream per SetSize Speicher von, in meinem Beispiel 20 Bytes, alloziere, dann
werden den ersten 2 Wörtern der Wert 4797940 bzw. 0xF4354900 zugeweisen und allen nachfolgenden 0.
Wieso erlaubt sich der Stream diese Freiheit und wie kann man das unterbinden :)?

schönen Abend noch!

Luckie 9. Okt 2010 22:41

AW: TMemoryStream -> SetSize
 
Das hat mit dem Stream nichts zu tun. Das sind nur Werte, die zufällig da im Speicher stehen.

chaoslion 9. Okt 2010 22:42

AW: TMemoryStream -> SetSize
 
Immer dieselben?:pale:

Luckie 9. Okt 2010 22:44

AW: TMemoryStream -> SetSize
 
Zufall. Eventuell schreibt auch dein Programm vorher da was hin. Und da das immer das gleiche ist, sind es auch immer die gleichen Werte.

chaoslion 9. Okt 2010 22:46

AW: TMemoryStream -> SetSize
 
Ach ja, der liebe Speicher..
Nagut ich danke Dir, erspart weiteres Unit durchforsten ;)

Luckie 9. Okt 2010 22:50

AW: TMemoryStream -> SetSize
 
Den Grund herauszufinden mag ja ganz interessant sein, aber letztendlich ist es egal, da du ja wahrscheinlich selber Daten reinschreibst und so die nicht initialisierten Daten so wie so überschreibst. Es interessiert also nicht, was da vorher stand.

chaoslion 9. Okt 2010 22:55

AW: TMemoryStream -> SetSize
 
Nein, da hast Du ja Recht. Ich dachte nur, gerade wegen der immer gleichen Zahl, dass es irgendwo mutwillig reingeschrieben wird..(warum auch immer)

Luckie 9. Okt 2010 23:00

AW: TMemoryStream -> SetSize
 
Der Prozess alloziiert irgendwann Speicher, nutzt ihn und gibt in wieder frei. Dabei bleiben natürlich die Werte erhalten. Jetzt kommst du mit deinem Stream setzt die Größe und erwischt die Adressen, die vorher schon mal genutzt wurden mit deren Inhalt. Und da wahrscheinlich immer das gleiche abläuft, sind auch die Werte immer gleich. Das war jetzt noch mal die Langfassung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 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