![]() |
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! |
AW: TMemoryStream -> SetSize
Das hat mit dem Stream nichts zu tun. Das sind nur Werte, die zufällig da im Speicher stehen.
|
AW: TMemoryStream -> SetSize
Immer dieselben?:pale:
|
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.
|
AW: TMemoryStream -> SetSize
Ach ja, der liebe Speicher..
Nagut ich danke Dir, erspart weiteres Unit durchforsten ;) |
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.
|
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)
|
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 14:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz