Typ zum Speichern von Addressen (x86/x64)
-
Hallo.
Unter C++ habe ich, wenn Speicheraddressen in Integervariablen speichern wollte, generel DWORD_PTR genutzt - dank typdef und Präprozessordefinitionen unter 32bit ein unsigned long und unter 64bit ein unsigned long long.
Welche Option habe ich hierzu in C#? Der Code muss unbedingt unabhängig bleiben.
Danke im voraus.
Grüße,
Flo.
-
Falsches Forum. Hier ist C#.
-
C#: IntPtr
-
es gibt sowas wie "ptrdiff_t" dabei muß man sich dann aber die frage stellen, ob die differenz zweier pointer den gleichen speicherplatz anbietet, wie ein pointer
lg lolo
-
theta schrieb:
Falsches Forum. Hier ist C#.
Ich meinte ja C#
C#: IntPtr
Danke, kann man arithmetische Operationen auf diesen Typ anwenden als wäre es ein Integer?
es gibt sowas wie "ptrdiff_t" dabei muß man sich dann aber die frage stellen, ob die differenz zweier pointer den gleichen speicherplatz anbietet, wie ein pointer
Logischerweise schon-
-
Icematix schrieb:
Danke, kann man arithmetische Operationen auf diesen Typ anwenden als wäre es ein Integer?
Ich glaube nicht (Aber es gibt z.B. .ToPointer()...)
Was genau hast du da vor? Warum nicht direkt Pointer benutzen wenn du mit Speicheradressen rumhantierst?
-
geeky schrieb:
Icematix schrieb:
Danke, kann man arithmetische Operationen auf diesen Typ anwenden als wäre es ein Integer?
Ich glaube nicht (Aber es gibt z.B. .ToPointer()...)
Was genau hast du da vor? Warum nicht direkt Pointer benutzen wenn du mit Speicheradressen rumhantierst?
Ich porte gerade meine C++ Gamehacking Klasse.
Dh., die Speicheraddressen, mit denen ich hantiere, sind nicht in meinem Prozess.Naja, vielleicht löse ich es über Generics, der Nutzer wählt am Anfang aus welcher Typ zum Speichern von Addressen genutzt wird.
-
Erinnert mich jetzt gerade:
http://german-bash.org/25242Gut, du programmierst wohl kein Wurm, aber irgendwie erscheint mir für diese Aufgabe C# ein wenig die falsche Sprache zu sein
Aber noch zwei Dinge:
IntPtr.ToInt64
IntPtr(Int64)
Also speichere das Dinge in einem Int64 ab auf 32 und 64 Bit Architektur. Der Konstruktor wirft eine Exception, wenn du unter 32 Bit bist und die Adresse ausserhalb des möglichen Adressbereichs ist.
Grüssli