鱼C论坛

 找回密码
 立即注册
查看: 3632|回复: 8

[技术交流] C语言堆内存块的重分配演示 malloc, realloc

[复制链接]
发表于 2022-10-5 14:28:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<stdio.h>
  2. /*#include<malloc.h>*/
  3. #include<stdlib.h>

  4. int main()
  5. {  
  6.         int i ,* temp;
  7.         const int size = 20;

  8.         int *p = (int *)malloc(5 * sizeof(int));
  9.         temp=p;
  10.         printf("malloc后指向地址%x\n", temp);
  11.         for (i=0;i<5;temp++,i++)
  12.         {
  13.                 *temp=0xaabbccdd;
  14.         }
  15.         temp=p;
  16.         i=0;
  17.         printf("p[5]内容%x ", *temp);
  18.         temp++;
  19.         for (i=1;i<5;temp++,i++)
  20.         {
  21.                 printf("%x ", *temp);
  22.         }
  23.         temp=p;
  24.         int *p1 = (int *)realloc(p, size*sizeof(int));
  25.           printf("\nrealloc后p指向地址%x\n", p);

  26.         i=0;
  27.         printf("p[5]内容%x ", *temp);
  28.         temp++;
  29.         for (i=1;i<5;temp++,i++)
  30.         {
  31.                 printf("%x ", *temp);
  32.         }
  33.     temp=p1;
  34.         printf("\nrealloc后p1指向地址%x\n", p1);
  35.         i=0;
  36.         printf("p1[10]内容%x ", *temp);
  37.         temp++;
  38.         for (i=1;i<10;temp++,i++)
  39.         {
  40.                 printf("%x ", *temp);
  41.         }
  42.     // free(p); 在 int *p1 = (int *)realloc(p, size*sizeof(int)); 如果执行该语句会编译出错,由于地址已经改变,原来的p指向空间再执行realloc时已经回收
  43.     free(p1);
  44.         system("pause");
  45.         return 0;
  46. }
复制代码


运行调试截图

运行调试截图
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-5 14:35:45 | 显示全部楼层
这个太好了,正是需要的.
只是好奇你如何得知此地址是空的,怎么可以直接使用,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-5 14:39:34 | 显示全部楼层
howzyao 发表于 2022-10-5 14:35
这个太好了,正是需要的.
只是好奇你如何得知此地址是空的,怎么可以直接使用,

用vC6.0调试可以看到,你要了解堆的分配块,看一看我的贴 https://fishc.com.cn/thread-212610-1-3.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-5 14:41:12 | 显示全部楼层
howzyao 发表于 2022-10-5 14:35
这个太好了,正是需要的.
只是好奇你如何得知此地址是空的,怎么可以直接使用,

当时发的那个关于堆的贴,出60鱼币都几乎没人看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-5 14:47:15 | 显示全部楼层
howzyao 发表于 2022-10-5 14:35
这个太好了,正是需要的.
只是好奇你如何得知此地址是空的,怎么可以直接使用,

如果用VC6.0调试函数的调用的过程,对学习C语言更有好处
VC6.0及插件下载:https://fishc.com.cn/thread-201726-1-1.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-14 22:14:00 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-19 23:51:44 From FishC Mobile | 显示全部楼层
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-29 17:59:28 | 显示全部楼层

这写内容对初学者有点难
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-29 18:43:47 | 显示全部楼层
这可是好东西哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-10 09:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表