关于指针算术的问题

pws*_*068 0 math warnings pointers

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

void *tailEnd = previousPlace->head_ptr + ((previousPlace->size+1)*(sizeof(int));
Run Code Online (Sandbox Code Playgroud)

我希望这会给我一个指向该段末尾的指针.但是,我一直收到警告:

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

有没有更好的方法呢?谢谢!

Mic*_*ael 5

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

int *p = some_address;
p++; 
Run Code Online (Sandbox Code Playgroud)

将p增加4个字节.void不能用于指针算术,因为void没有与之关联的大小.如果要对void指针执行字节大小的算术运算,则需要将指针强制转换为字节大小的类型.