Pointer wert bekommen
-
Hey zusammen, ich möchte mir eine Funktion schreiben, die mein allozierten Speicher protokolliert.
Eingaben: aktion( "open", "close" ), pointer der auf allozierten speicher zeigt, notiz.
Ausgabe: in text-Dokument: nummer, speicheradresse des allozierten speichers, notiz.
wenn aktion == "open" pointer_auf_speicher in string konvertieren WritePrivateProfileString( .... "string" ... );Der schreibt mir keinen integer in die datei. Der Wert, der in dem Pointer abgelegt ist, ist ja n hexa-Wert, der die Adresse ist auf den der Pointer zeigt. Wie kann ich den in meine Datei schreiben? Also auch als hexa-Wert.
aktueller exakter code ist:
// temp = die nummer des speichers if(!memcmp( action, "open", 4 )){ char temp_address[50]; int a = (int) ptoMem; itoa(a,temp_address,20); if(!WritePrivateProfileString("open",temp,temp_address,"memlog/MemLog.txt")) MessageBox(0,"WPPS failed!","error",0); }in meiner textdatei steht z.b. 6c0228 , was aber was ganz anderes ist, als wenn ich es wärend der laufzeit ausgeben lasse in meiner konsole.
-
Egal was du genau vorhast oder machen möchtest, ich glaube nicht, dass dir bewusst ist, was du da wirklich machst und welche Folgen das haben wird.
Wozu willst/musst du dir ein Speicheradresse persistieren (ausser zu Logging Zwecken)?
-
Skym0sh0 schrieb:
Wozu willst/musst du dir ein Speicheradresse persistieren
Na zu Logging-Zwecken, sagt er doch. Das ist das einzige, was ich an der Frage verstehe.
(ausser zu Logging Zwecken)?
Oh.
-
Was für Folgen soll das haben?
Ich will einfach nur gucken worauf der pointer zeigt und das in nem logFile speichern. Ich änder nichts.
Wozu willst/musst du dir ein Speicheradresse persistieren (ausser zu Logging Zwecken)?
Zu logging zwecken. Ich will einfach nur sehen, welcher Speicher belegt ist.
-
Bashar schrieb:
Das ist das einzige, was ich an der Frage verstehe.
Ich möchte die Adresse, die ein Pointer enthält, in eine Textdatei schreiben, mit WritePrivateProfileString(). Diese Adresse kann ich aber nicht einfach ausgeben weil der pointer kein integer ist.
mit cout << pointer kommen nur irgendwelche zeichen als ausgabe. wenn man ihn zum int castet funktioniert es auch nicht.
für privateprofilestring muss ich ein string angeben. dann caste ich den erst als int und den int dann zum string.
dann caste ich ihn in der main zum test nur zum int.
ich erwarte, dass beide zahlen gleich sind(die in der textdatei und die in der main), aber das sind sie nicht
-
Obstsalat schrieb:
Bashar schrieb:
Das ist das einzige, was ich an der Frage verstehe.
Ich möchte die Adresse, die ein Pointer enthält, in eine Textdatei schreiben, mit WritePrivateProfileString(). Diese Adresse kann ich aber nicht einfach ausgeben weil der pointer kein integer ist.
cout << static_cast<void*>(myPointer);
-
BTW wieso gibst du bei itoa eigentlich die Basis 20 an? Du scheinst zu programmieren wie du Fragen stellst ...

-
Um ehrlich zu sein, habe ich keine Ahnung wozu die Zahl genau ist.
Die Frage war doch klar formuliert, was ich erreichen möchte.
-
Problem gelöst, indem ich mir die Funktionsparameter von itoa durchgelesen habe. Zur Basis 20 ist natürlich Planlos, wenn ich den Hexadezimalwert will.
Danke für den Hinweis.
Cucu
-
*schnipp*