我可能无法理解这种情况。我正在制作我自己的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;