从不同的指针 C 获取指向内存地址的指针
Getting a pointer to a memory address from a different pointer C
我正在编写自己的内存分配器。我从 mmap 得到一个指向映射内存的指针。从那里,我希望能够获得指向该映射内存的不同部分的指针(比如距离当前指针 x 字节)。我怎样才能做到这一点?内存管理让我很困惑。
mmap
给你一个 void*
并且 C 不允许用它们进行指针运算,但你可以将它转换为 char*
然后只需添加你想要的字节数,例如mypointer + 16
.
如果将指针转换为更大的类型(如 int*
),指针运算会增加该类型大小的倍数。例如,如果您将 16 添加到 int*
,您将添加足够的字节用于 16 个 int
值(所以 64 个字节,假设 sizeof(int)
是 4)。
我正在编写自己的内存分配器。我从 mmap 得到一个指向映射内存的指针。从那里,我希望能够获得指向该映射内存的不同部分的指针(比如距离当前指针 x 字节)。我怎样才能做到这一点?内存管理让我很困惑。
mmap
给你一个 void*
并且 C 不允许用它们进行指针运算,但你可以将它转换为 char*
然后只需添加你想要的字节数,例如mypointer + 16
.
如果将指针转换为更大的类型(如 int*
),指针运算会增加该类型大小的倍数。例如,如果您将 16 添加到 int*
,您将添加足够的字节用于 16 个 int
值(所以 64 个字节,假设 sizeof(int)
是 4)。