使用指针浏览数组使用指针

问题描述:

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

'pointer'指向静态数组''hello''的第一个元素。 'pointer-1'具有未定义的行为。 – melpomene

+0

FWIW,'pointer =(char *)&(mem [10]);'只是一种复杂的写入方式'pointer = mem + 10;' –

+0

您的程序可以缩减为'printf(“%d \ n” ,“你好”[ - 1])',这显然是无效的。 – melpomene

如果要创建一个自定义的内存分配器,你将需要实现的malloc,realloc的/*等,你如何保持内存分配的轨道是由你(一般是某种固定的头文件之前刚刚指针返回给调用者),没有“标准”,所以你不能只从指针中减去n个字节并开始挖掘。