Adresse eines Pointers in eine Datei schreiben

Hallo!

Ich bin momentan am Debuggen eines C+±Programmes - genauer gesagt ich räume gerade den Speicher hinter mir her frei und debugge Destructoren.
Allerdings brauche ich für diese Aufgabe am besten eine Datei, in der ich die Adressen der erstellten Objekte drin speichere.

Ich habe also einen Stream kreiert um dort die ersten Werte und die Adresse des frisch erstellten Objektes hineinzuschreiben.
Aber leider finde ich nirgendwo eine Möglichkeit, den Pointer in ein char[] oder einen string zu konvertieren - denn der Stream möchte die Adresse des Pointers nicht in die Datie schreiben (Compiler meckert).

Kennt jemand einen Trick wie ich dies hinbekommen kann?

Grüße

Björn

Hallo.

Ich bin momentan am Debuggen eines C+±Programmes - genauer
gesagt ich räume gerade den Speicher hinter mir her frei und
debugge Destructoren.
Allerdings brauche ich für diese Aufgabe am besten eine Datei,
in der ich die Adressen der erstellten Objekte drin speichere.

Ich habe also einen Stream kreiert um dort die ersten Werte
und die Adresse des frisch erstellten Objektes
hineinzuschreiben.
Aber leider finde ich nirgendwo eine Möglichkeit, den Pointer
in ein char[] oder einen string zu konvertieren - denn der
Stream möchte die Adresse des Pointers nicht in die Datie
schreiben (Compiler meckert).

Kennt jemand einen Trick wie ich dies hinbekommen kann?

Du kannst den Pointer in einen int casten und diesen per snprintf() dann in einen String schreiben. Also z.B. so:

void* pointer;
char output[20];

_snprintf(output, 20, „0x%8x“, (int) pointer);
output[19] = 0;

Eventuell geht das auch ohne casten, das musst du mal ausprobieren.

Sebastian.

Nachtrag
void* pointer;
char output[20];

_snprintf(output, 20, „0x% 0 8x“, (int) pointer);
output[19] = 0;

Damit es auch gescheit aussieht.

Ich habe also einen Stream kreiert um dort die ersten Werte
und die Adresse des frisch erstellten Objektes
hineinzuschreiben.
Aber leider finde ich nirgendwo eine Möglichkeit, den Pointer
in ein char[] oder einen string zu konvertieren - denn der
Stream möchte die Adresse des Pointers nicht in die Datie
schreiben (Compiler meckert).

Kennt jemand einen Trick wie ich dies hinbekommen kann?

Ja:

#include 
#include 

using namespace std;

struct pprint {
 void\* p;

 pprint( void\* \_p ) : p(\_p) {}
};

template 
basic\_ostream& operator& s, const pprint& p ) {
 s (p.p);
 return s;
}

int main( void ) {
 int some\_var = 42;
 void\* some\_ptr = &some\_var;

 cout 

Besten Dank! (ot)
ohne text