使用指针浏览数组使用指针
问题描述:
我在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;
}
答
如果要创建一个自定义的内存分配器,你将需要实现的malloc,realloc的/*等,你如何保持内存分配的轨道是由你(一般是某种固定的头文件之前刚刚指针返回给调用者),没有“标准”,所以你不能只从指针中减去n个字节并开始挖掘。
'pointer'指向静态数组''hello''的第一个元素。 'pointer-1'具有未定义的行为。 – melpomene
FWIW,'pointer =(char *)&(mem [10]);'只是一种复杂的写入方式'pointer = mem + 10;' –
您的程序可以缩减为'printf(“%d \ n” ,“你好”[ - 1])',这显然是无效的。 – melpomene