使用指针导航数组

时间:2017-10-20 13:34:57

标签: c arrays pointers memory-management

我在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;
}

1 个答案:

答案 0 :(得分:0)

如果要创建自定义内存分配器,则需要实现malloc,realloc / free等,如何跟踪内存分配由您决定(通常是在指针返回到指针之前的某种固定头)调用者),没有'标准',所以你不能只从指针中减去n个字节并开始挖掘。