C语言 动态内存扩展
执行结果截图:
代码:
#include "stdio.h"
#include "stdlib.h"
#include "memory.h"
int main()
{
int * ptr1= NULL;
int * ptr2= NULL;
int * ptr = NULL;
int i, num;
int count = 0;
// 第一次申请的内存空间
printf("Creating a 10 size int type DRAM : \n");
ptr1 = (int *)calloc(10, sizeof(int));
if (NULL == ptr1)
{
exit(0);
}
for(i = 0; i < 10; i++)
{
printf("%d ", ptr1[i]);
}
putchar('\n');
// 进行若干操作之后发现ptrl申请的内存空间竟然不够用,决定扩展内存空间
printf("Extending size of int type DRAM from 10 to 20 : ");
// 第二次申请的内存空间
ptr2 = (int *)calloc(20 , sizeof(int));
if (NULL == ptr2)
{
exit(0);
}
putchar('\n');
// 将ptr1的数据拷贝到ptr2中
memcpy(ptr2, ptr1, 10 * sizeof(int));
free(ptr1);
for(i = 0; i < 20; i++)
{
printf("%d ", ptr2[i]);
}
putchar('\n');
// 对ptr2申请的内存空间进行若干操作后...
free (ptr2);
// 用realloc函数可以直接实现类似以上的扩展内存空间操作
do
{
printf("请输入一个整数(输入-1表示结束):");
scanf("%d", &num);
count++;
ptr = (int *)realloc(ptr, count*sizeof(int));
if(NULL == ptr)
{
exit(1);
}
ptr[count - 1] = num;
} while (num != -1);
printf("输入的整数分别是 : ");
// (count - 1)是不想把最后打的结束符号-1打印出来
for (i=0; i < count - 1; i++)
{
printf("%d ", ptr[i]);
}
putchar('\n');
free(ptr);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】