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;
}
posted @   JohnnyH  阅读(297)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示