指针数组赋值直接更改指针值

时间:2015-04-25 03:37:04

标签: c pointers

我可能无法理解这种情况。我正在制作我自己的malloc版本,其中提供的sbrk函数为我提供了一个用于分配内存的地址。这个地址进入

void* heap = my_sbrk(stuff);

我需要把我最近获得的空间放在一个数组中。由于堆指针指向可用空间的开头,我做

freelist[7] = heap;

现在我可以实现我的功能,它可以完美地工作直到某些事情

freelist[7] = NULL;

导致堆也变为空

更一般地说,如果我想更改任何指向堆的起始地址的指针,而不是指向NULL,则堆也最终指向NULL。

这是内存分配的问题吗?我误解了指针是如何工作的,这是一个问题吗?

编辑:这与“重复的问题”完全不同,海报希望了解内存的分配方式。我想了解为什么更改指针数组元素的值也会更改元素指向的对象。

即如果我这样做

int* array;
int value = 8;
int* pointer = &value;
array[0] = pointer;
array[0] = NULL;

我希望array [0] = NULL和* pointer = 8;

0 个答案:

没有答案