Laden...

Auslesen von Speicheradressen in C#

Erstellt von stolpervogel vor 10 Jahren Letzter Beitrag vor 10 Jahren 4.534 Views
S
stolpervogel Themenstarter:in
3 Beiträge seit 2013
vor 10 Jahren
Auslesen von Speicheradressen in C#

Hallo Zusammen,

ich bin zur Zeit dran den Garbage Collector etwas unter die Lupe zu nehmen und würde dazu gern Speicheradressen verschiedener Variablen auslesen.
Da ich jedoch von C und Java komme hab ich schnell gemerkt, dass es nicht so leicht ist
in C# mit Pointer und Speicheradressen zu arbeiten. (nur im unsafe mode)

jedenfalls würde ich gerne die Speicheradresse eines angelegten Objektes ausgeben lassen, hab auch zwei Möglichkeiten gefunden die mir Hex-adressen liefern, jedoch sind diese unterschiedlich und jetzt frag ich mich, welcher der beiden Code-Schnipsel korrekt ist:

String zeichen = Console.ReadLine();
            
    IntPtr ptr = Marshal.StringToCoTaskMemAnsi(zeichen);
    string adresse = ptr.ToString("X4")
    Console.WriteLine("0x00" + adresse);

einmal diese Variante und einmal diese:

String zeichen = Console.ReadLine();
     IntPtr adress1 = GCHandle.Alloc(zeichen, GCHandleType.Pinned).AddrOfPinnedObject();
     Console.WriteLine("0x00" + adress1.ToString("X"));

Weis hier jemand besser bescheid? bzw. liefert mir einer der beiden Codes gar nicht die richtige Speicheradresse sonder was anderes?

vielen Dank schonmalfür die Antworten.

2.298 Beiträge seit 2010
vor 10 Jahren

Hallo, deine 2. Variante reserviert wenn ich das richtig verstanden habe Speicherplatz für dein Objekt. Das kann so also nicht passen.

// EDIT:

Ein Vorschlag meiner Seits wäre, das du mal deine Ausgaben mit der Ausgabe von Gewusst wie: Abrufen der Adresse einer Variable vergleichst.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

S
stolpervogel Themenstarter:in
3 Beiträge seit 2013
vor 10 Jahren

Danke, ich schaus mir mal an =)

I
57 Beiträge seit 2011
vor 10 Jahren

Ansonsten, wenns dir sowieso um den GC geht, was speziell willst du denn testen ?
MS hat da einige Fälle und Erklärungen schon parat.
Garbage Collector-Grundlagen und Tipps zur Leistung
Garbage Collection
Understanding .NET Garbage Collection

Hinweis von gfoidl vor 10 Jahren

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 3.1

S
stolpervogel Themenstarter:in
3 Beiträge seit 2013
vor 10 Jahren

Hallo iSliver,

Vielen Dank für die Links, ich frag mich manchmal wie Ihr diese bei der Überschwemmung von Informationen im Internet noch findet 😉

Ich tätige gerade einPraktikum im Bereich Sicherheitsinformatik und habe als Projekt die Aufgabe bekommen etwas über die Sicherheit im Bereich C# und eben Hauptsächlich dem GC zu erarbeiten. Ob es zb.Möglich ist an Speicheradressen ran zu komme bzw. wie lang diese noch auf dem Heap liegen bis diese verworfen werden usw.

Danke erstmal, die Links bringen mich auf jeden fall ein gutes stück weiter.