马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*更灵活的内存管理方式
·malloc
--申请动态内存空间
·free
--释放动态内存空间
·calloc
--申请并初始化一系列内存空间
·realloc
--重新分配内存空间
*/
int main()
{
int *ptr = NULL;
int num,i;
printf("请输入待录入整数的个数:");
scanf("%d",&num);
ptr = (int *)malloc(num * sizeof(int));
if(ptr == NULL)
{
exit(1);
}
memset(ptr,0,8 * sizeof(int));
/*等价分配内存空间并初始化
ptr = (int *)calloc(8,sizeof(int));
*/
for(i = 0;i < num;i++)
{
printf("请录入第%d个整数:",i+1);
scanf("%d",&ptr[i]);
}
printf("您录入的数字是:");
for(i = 0;i < num;i++)
{
printf("%d ",*(ptr+i));
}
int *ptr1 = NULL;
int *ptr2 = NULL;
//第一次申请的内存空间
ptr1 = (int *)malloc(10 * sizeof(int));
if(ptr1 == NULL)
{
exit(1);
}
for(i = 0;i < 10;i++)
{
ptr1[i] = i;
}
for(i = 0;i < 10;i++)
{
printf("%d ",ptr1[i]);
}
//假设ptr1申请的内存空间不够用了。
//第二次申请内存空间。
ptr2 = (int *)calloc(20,sizeof(int));
if(ptr2 == NULL)
{
exit(1);
}
//将ptr1的数据拷贝到ptr2中。
memcpy(ptr2,ptr1,10 * sizeof(int));
free(ptr1);
//对ptr2申请的内存空间进行操作。
free(ptr2);
return 0;
}
运行结果:
请输入待录入整数的个数:3
请录入第1个整数:1
请录入第2个整数:2
请录入第3个整数:3
您录入的数字是:1 2 3
Process returned -1073740940 (0xC0000374) execution time : 9.945 s
Press any key to continue.
执行完上半段程序后就意外中断了,返回值不是0 |