C语言堆内存块的重分配演示 malloc, realloc
#include<stdio.h>/*#include<malloc.h>*/
#include<stdlib.h>
int main()
{
int i ,* temp;
const int size = 20;
int *p = (int *)malloc(5 * sizeof(int));
temp=p;
printf("malloc后指向地址%x\n", temp);
for (i=0;i<5;temp++,i++)
{
*temp=0xaabbccdd;
}
temp=p;
i=0;
printf("p内容%x ", *temp);
temp++;
for (i=1;i<5;temp++,i++)
{
printf("%x ", *temp);
}
temp=p;
int *p1 = (int *)realloc(p, size*sizeof(int));
printf("\nrealloc后p指向地址%x\n", p);
i=0;
printf("p内容%x ", *temp);
temp++;
for (i=1;i<5;temp++,i++)
{
printf("%x ", *temp);
}
temp=p1;
printf("\nrealloc后p1指向地址%x\n", p1);
i=0;
printf("p1内容%x ", *temp);
temp++;
for (i=1;i<10;temp++,i++)
{
printf("%x ", *temp);
}
// free(p); 在 int *p1 = (int *)realloc(p, size*sizeof(int)); 如果执行该语句会编译出错,由于地址已经改变,原来的p指向空间再执行realloc时已经回收
free(p1);
system("pause");
return 0;
}
这个太好了,正是需要的.
只是好奇你如何得知此地址是空的,怎么可以直接使用, howzyao 发表于 2022-10-5 14:35
这个太好了,正是需要的.
只是好奇你如何得知此地址是空的,怎么可以直接使用,
用vC6.0调试可以看到,你要了解堆的分配块,看一看我的贴 https://fishc.com.cn/thread-212610-1-3.html howzyao 发表于 2022-10-5 14:35
这个太好了,正是需要的.
只是好奇你如何得知此地址是空的,怎么可以直接使用,
当时发的那个关于堆的贴,出60鱼币都几乎没人看 howzyao 发表于 2022-10-5 14:35
这个太好了,正是需要的.
只是好奇你如何得知此地址是空的,怎么可以直接使用,
如果用VC6.0调试函数的调用的过程,对学习C语言更有好处
VC6.0及插件下载:https://fishc.com.cn/thread-201726-1-1.html 堆的知识看
https://fishc.com.cn/thread-212610-1-1.html 学习学习 竹逸 发表于 2022-10-19 23:51
学习学习
这写内容对初学者有点难 这可是好东西哦
页:
[1]