为什么返回后会更改指针值?

时间:2016-04-25 03:12:05

标签: c memory

免责声明:这是作业作业,但提出的问题与实际作业无关。

我必须为我的一个类实现一个简单的内存管理器,在函数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

调用function();

void* mem = my_malloc(10*sizeof(char));
printf("Calling Function: %p\n", mem);

对不起,如果这不是有用的,但我认为这可能足以解决问题,而不会给所有600和代码行。

警告开始:

incompatible integer to pointer conversion assigning to 'void *' from 'int'

1 个答案:

答案 0 :(得分:1)

调用my_malloc()函数的代码可能没有为函数提供正确的声明/原型,因此它将返回的指针视为int

在调用my_malloc()之前放置以下内容(理想情况下,这应该位于调用该函数的任何代码所包含的标题中,以及定义该函数以确保其正确的代码)。 / p>

void* my_malloc(size_t size);