2016-04-25 67 views
-2

免责声明:这是一项家庭作业,但被问到的问题与实际作业无关。为什么一旦返回指针值就改变了?

我必须为我的一个类实现一个简单的内存管理器,函数my_malloc在函数返回之前正在返回的值是一个this(例如: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' 
+0

什么是'memoryHeader'?它是堆栈还是堆?我不认为你需要600行代码,但可能需要20或30行代码才能重现**问题描述问题是必要的。 –

+2

如果问题是可重现的,这将有所帮助。即短的,自包含的,正确的(可编译的),例子会有所帮助; http://sscce.org/ – antak

+1

[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve) –

回答

1

代码调用my_malloc()功能可能没有被给出了功能的适当声明/原形,所以它的治疗返回的指针为int

在拨打my_malloc()(理想情况下,这应该包含在调用函数的任何代码以及定义确保函数正确的函数的代码中)的头文件中。

void* my_malloc(size_t size); 
+0

我试过了,它没有改变任何东西。 –

+1

然后我想你需要找时间来发布一个例子,而不是不完整的片段。 –

相关问题