2010-03-31 104 views
0

Heyy大家好! 我想創建一個內存管理系統,以便用戶可以調用我創建的方法myMalloc。我有一個鏈接列表來記錄我的空閒內存。我的問題是當我試圖找到我的鏈接列表中的空閒位的結尾。我正試圖將該部分(位於鏈接列表中)的空閒內存大小添加到指向可用空間前部的指針,如下所示。指針算術問題

void *tailEnd = previousPlace->head_ptr + ((previousPlace->size+1)*(sizeof(int)); 

我希望這會給我一個指向該段的結束。不過,我不斷收到警告:

「指針類型的‘無效*’在算術表達式中使用」

是否有這樣做的更好的辦法?謝謝!

回答

5

指針算術使用底層類型的大小。如果int爲4個字節:

int *p = some_address; 
p++; 

將使p增加4個字節。 void不能用於指針算術,因爲void沒有關聯的大小。如果你想在void指針上做字節大小的算術,你需要將指針轉換爲字節大小的類型。

1
int *tailEnd = (int*) (previousPlace->head_ptr + ((previousPlace->size+1)*(sizeof(int))); 
+0

謝謝!!而對於任何其他人提到這一點,我也應該注意到,如果需要的話,你可以在之後將這個返回給void *。 – pws5068 2010-03-31 21:35:40