我在C中创建自定义内存分配器,但是使用先前已在其中分配的指针移动我的“mem”数组时遇到问题。我需要向左移动一个索引,以便我可以看到在我尝试释放的块之前的块是否为空。但是移动指针并不像我想的那样工作。 那么如何在指针之前移动一个索引?
int main()
{
char mem[50];
char *pointer;
char *ptr_toFree;
pointer=(char *) &(mem[10]);
pointer = "hello";
int num = 10;
mem[9] = num;
ptr_toFree=(char*)(pointer-1);
printf("Value of mem[9] = %d\n", *ptr_toFree);
return 0;
}
答案 0 :(得分:0)
如果要创建自定义内存分配器,则需要实现malloc,realloc / free等,如何跟踪内存分配由您决定(通常是在指针返回到指针之前的某种固定头)调用者),没有'标准',所以你不能只从指针中减去n个字节并开始挖掘。