Pointers 指针算法问题

Pointers 指针算法问题,pointers,warnings,math,Pointers,Warnings,Math,大家好! 我正在尝试创建一个内存管理系统,以便用户可以调用我创建的方法myMalloc。我有一个链表记录我的空闲内存。我的问题是当我试图在我的链接列表中找到一个空闲位的结尾时。我试图将该部分(链接列表中)中的空闲内存大小添加到指向空闲空间前面的指针上,如下所示 void *tailEnd = previousPlace->head_ptr + ((previousPlace->size+1)*(sizeof(int)); 我希望这能给我一个指向那一段结尾的指针。然而,我不断得到警告

大家好! 我正在尝试创建一个内存管理系统,以便用户可以调用我创建的方法myMalloc。我有一个链表记录我的空闲内存。我的问题是当我试图在我的链接列表中找到一个空闲位的结尾时。我试图将该部分(链接列表中)中的空闲内存大小添加到指向空闲空间前面的指针上,如下所示

void *tailEnd = previousPlace->head_ptr + ((previousPlace->size+1)*(sizeof(int));
我希望这能给我一个指向那一段结尾的指针。然而,我不断得到警告:

“算术中使用的'void*'类型的指针”


有更好的方法吗?谢谢

指针算法使用基础类型的大小。如果int为4字节:

int *p = some_address;
p++; 

将p增加4个字节。无法在指针算术中使用void,因为void没有与关联的大小。如果要对空指针执行字节大小的算术,则需要将指针强制转换为字节大小的类型。

指针算术使用基础类型的大小。如果int为4字节:

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

将p增加4个字节。无法在指针算术中使用void,因为void没有与关联的大小。如果要对空指针执行字节大小的运算,需要将指针强制转换为字节大小的类型。

谢谢!!对于其他引用此内容的人,我还应该注意,如果需要,您可以稍后将此内容放回空白处。谢谢!!对于其他引用本文的人,我还应该注意,如果需要的话,您可以在之后将其转换回void*。
int *tailEnd = ( int* ) ( previousPlace->head_ptr + ((previousPlace->size+1)*(sizeof(int)) );