刚刚学到malloc,然后试着写了串代码看看重复对p用malloc,malloc的地址和程序运行的结果是什么。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int* p=0;
p = (int*)malloc(1024 * 1024 * 100);
printf("%p\n", p);
while (p != NULL)
{
p = (int*)malloc(1024 * 1024 * 100);
printf("%p\n", p);
}
printf("%p\n", p);
}
p的地址一直增大直到超出分配空间会返回0这我知道。
疑惑的是:p的地址一直增大是不是因为重复做malloc之前没有free?
不理解的是:每行的p的地址都是首地址吗(我想毕竟它重新分配了,所以首地址也跟着重新变换了?)?如果是的话那之前分配过的没有free的空间去哪了?p还指向那些地方吗?