使用 sbrk 释放内存时遇到问题。我通过 sbrk 一个负值,但它不会减少堆的开始。这是代码
int main(int argc, char** argv) {
void * a = sbrk(0);
printf("%p\n",a);
sbrk(2);
sbrk(-1);
a = sbrk(0);
printf("%p\n",a);
}
这是示例输出:
0x10734f000
0x10734f002
我不明白为什么在 sbrk 减一后打印的值没有返回为 0x10734f001 。
我不允许在这个程序中使用 malloc。这是使用 sbrk 的 malloc 和 free 的自定义实现