超级无敌磊果果 发表于 2019-2-26 21:50:02

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

看了小甲鱼 的动态内存分配 写了一下程序 运行结果却显示拷贝出错了 请问程序哪里写错了吗
#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);
        }
        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);
        }
        putchar('\n');

        //进行若干次操作以后

        free(ptr2);
        return 0;
}

ba21 发表于 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);
页: [1]
查看完整版本: 动态内存分配中使用memcpy拷贝数据的时候出错,请问这是什么原因