鱼C论坛

 找回密码
 立即注册
查看: 1421|回复: 1

[已解决]动态内存分配中使用memcpy拷贝数据的时候出错,请问这是什么原因

[复制链接]
发表于 2019-2-26 21:50:02 | 显示全部楼层 |阅读模式

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

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

x
看了小甲鱼 的动态内存分配 写了一下程序 运行结果却显示拷贝出错了 请问程序哪里写错了吗
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
        int *ptr1 = NULL;
        int *ptr2 = NULL;
        int i;
        //第一次申请的内存空间
        ptr1 = (int *)malloc(10*sizeof(int));

        //进行初始化
        memset(ptr1, 0, 10*sizeof(int));

        for(i=0;i<10;i++)
        {
                printf("%d  ",ptr1[i]);
        }
        putchar('\n');

        //进行若干次操作后发现ptr1的空间不够用

        //第二次申请内存空间
        ptr2 = (int *)malloc(20*sizeof(int));

        //将ptr1中的数据拷贝到ptr2中
        memcpy(ptr2, ptr1, 10);
        free(ptr1);
        for(i=0;i<10;i++)
        {
                printf("%d  ",ptr2[i]);
        }
        putchar('\n');

        //进行若干次操作以后

        free(ptr2);
        return 0;
}
最佳答案
2019-2-26 22:21:40
        //第二次申请内存空间
        ptr2 = (int *)malloc(20*sizeof(int));
        
                //进行初始化
        memset(ptr2, 0, 20*sizeof(int));

        //将ptr1中的数据拷贝到ptr2中
        memcpy(ptr2, ptr1, 10*sizeof(int));
        free(ptr1);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-2-26 22:21:40 | 显示全部楼层    本楼为最佳答案   
        //第二次申请内存空间
        ptr2 = (int *)malloc(20*sizeof(int));
        
                //进行初始化
        memset(ptr2, 0, 20*sizeof(int));

        //将ptr1中的数据拷贝到ptr2中
        memcpy(ptr2, ptr1, 10*sizeof(int));
        free(ptr1);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 23:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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