程序如下:
不知道为什么在输出ptr_len=5之后会有段错误?
#include <stdio.h>
#include <malloc.h>
#include <string.h>
int main(void)
{
char *ptr=NULL;
char str1[] = "hello";
char str2[] = "wo";<

展开全部
收起
2回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 雪先生

    5人对此回答表示赞同

    把free(ptr)放到代码最后
    #include <stdio.h>
    #include <malloc.h>
    #include <string.h>
    int main(void)
    {
    char *ptr=NULL;
    char str1[] = "hello";
    char str2[] = "wo";
    ptr =(char*
    展开
    5
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 夏雨

    3人对此回答表示赞同

    ptr = malloc(10);
    ptr = str1;
    上面这个处理有问题,
    你将ptr指向新申请的空间后,
    又将它指向了str1这个地址,
    这导致了两个问题:
    1. 之前分配的malloc(10)这个内存变成了野地址对应的内存
    2. free(ptr); 这一句变成了释放str1指向内存,str1是一个常量区,进行free操作是错误的

    ptr = malloc(10);
    ptr=
    展开
    3
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部