2016-04-25 47 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

然後我想你需要找時間來發佈一個例子,而不是不完整的片段。 –

相關問題