Отказ от ответственности: это для домашнего задания, но задаваемый вопрос не связан с фактическим назначением.Почему значение указателя изменяется после его возврата?
Я должен реализовать простой менеджер памяти для одного из моих классов, в функции my_malloc перед возвратом из функции возвращаемое значение является одним из них (скажем: 0x7fb0049ed410), а в вызывающей функции это другой (скажем: 0x49ed410).
my_malloc (unsigned int);
typedef void* Addr;
Addr raddr = (Addr) (memoryHeader + sizeof(header)))
printf("Giving Memory: %p : %p\n", addr, raddr);
return raddr
вызывающая функция();
void* mem = my_malloc(10*sizeof(char));
printf("Calling Function: %p\n", mem);
Я сожалею, если это не полезно, но я думал, что это может быть достаточно, чтобы получить эту проблему через, не давая все 600 и что-то строка кода.
Предупреждение начинают Дано:
incompatible integer to pointer conversion assigning to 'void *' from 'int'
Что такое 'memoryHeader'? Это в стеке или куче? Я не думаю, что вам нужно 600 строк кода, но, возможно, 20 или 30 строк кода, которые могут ** воспроизводить **, проблема необходима для описания проблемы. –
Это поможет, если проблема будет воспроизводимой. то есть Short, Self Contained, Correctable (Compilable), Example поможет; http://sscce.org/ – antak
[Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) –