Haftungsausschluss: Dies ist für eine Hausaufgabe, aber die Frage, die gestellt wird, hat nichts mit der tatsächlichen Aufgabe zu tun.Warum wird ein Zeigerwert nach der Rückgabe geändert?
Ich muss einen einfachen Speicher-Manager für eine meiner Klassen implementieren, in der Funktion my_malloc kurz vor der Rückkehr von der Funktion der Wert, der zurückgegeben wird (z. B. 0x7fb0049ed410) und in der aufrufenden Funktion ist es ein anderes (sagen wir: 0x49ed410).
my_malloc (unsigned int);
typedef void* Addr;
Addr raddr = (Addr) (memoryHeader + sizeof(header)))
printf("Giving Memory: %p : %p\n", addr, raddr);
return raddr
Aufruf der Funktion();
void* mem = my_malloc(10*sizeof(char));
printf("Calling Function: %p\n", mem);
Es tut mir leid, wenn dies nicht hilfreich ist, aber ich dachte, das genug sein könnte, um das Problem über ohne Angabe alle 600 und etwas Zeile Code zu bekommen.
Warnung beginnen gegeben:
incompatible integer to pointer conversion assigning to 'void *' from 'int'
Was ist 'memoryHeader'? Ist es auf dem Stapel oder dem Haufen? Ich glaube nicht, dass Sie 600 Codezeilen benötigen, aber vielleicht sind 20 oder 30 Codezeilen, die das Problem reproduzieren können, notwendig, um das Problem zu beschreiben. –
Es würde helfen, wenn das Problem reproduzierbar wäre. ein Kurzes, selbst enthaltenes, korrektes (kompilierbares) Beispiel würde helfen; http://sscce.org/ – antak
[Wie man ein minimales, vollständiges und überprüfbares Beispiel erstellt] (http://stackoverflow.com/help/mcve) –