ich eine Funktion unter Like:einen Void Pointer Buffer Argument aufrufen wirft Runtime Error
void Dump(uint32_t sig, const void *buf, int bytes_to_send) {
}
, die von der UT-Code aufgerufen werden muss.
habe ich versucht, den folgenden Code-Schnipsel zu nennen:
Method1:
// string to char* - but thats not what I want
string *pStr = new string("Where is my place in Memory?");
uint32_t sig = 4;
Dump(sig,pStr,100);
Method2:
// char to string
char tab[4];
tab[0] = 'c';
tab[1] = 'a';
tab[2] = 't';
tab[3] = '\0';
Dump(4,&tab,sizeof(tab));
Method3:
int i=0;
char aPointer[] = "I love earth and all its creatures.";
char *pCarrier[sizeof(aPointer)];
for (i = 0; i < sizeof(aPointer); i++)
pCarrier[i] = &aPointer[i];
Dump(4,pCarrier ,sizeof(aPointer));
Alles Compiliert Aber die RunTime Verhalten ior Fehler wie
Invalid read of size 2
==16492== at 0x4A08DAC
==16492== Invalid read of size 8
Memcheck:Addr2
Andere Fehler:
==24108== Use of uninitialised value of size 8
Bitte einige Vorschläge Freunde teilen !!
ein wenig irreführend, ein Array zu nennen 'aPointer', meinen Sie nicht? – emlai
Entschuldigung, es ist ein Tippfehler .. – godson
Ihr Compiler sollte sich beschweren über 'char * pCarrier = & aPointer;'. Bitte beheben Sie alle Compiler-Nachrichten und veröffentlichen Sie einen [MCVE] (http://stackoverflow.com/help/mcve) –