+ -
当前位置:首页 → 问答吧 → 求助简单的问题

求助简单的问题

时间:2010-09-06

来源:互联网

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define SIZE 255

void copy(char *str,int len)
{
        char *p=str;

        char *string2=NULL;
        string2=(char *)malloc(len+1);
       
        while (*p!='\0')
        {
                *string2++=*p++;
        }

        printf("The string2 is :\n %s\n ",string2);
        free(string2);
}

void main()
{
        char string1[SIZE];
        printf("Please input a string\n");
        gets(string1);

        printf("The string1 is : \n %s\n ",string1);

        int length=strlen(string1);


        copy(string1,length);

       

}
为什么运行的时候有问题,

作者: mafuli007   发布时间: 2010-09-06

free(string2);这时string2已经被前面循环中++了

作者: hellioncu   发布时间: 2010-09-06

回复 hellioncu


    这句没问题吧,打印出来释放掉啊

作者: mafuli007   发布时间: 2010-09-06

仔细阅读2楼回复

作者: net_robber   发布时间: 2010-09-06



QUOTE:
回复  hellioncu


    这句没问题吧,打印出来释放掉啊
mafuli007 发表于 2010-09-06 13:35




    free的指针必须是malloc之类函数的返回值,你++都把指针值改了

作者: hellioncu   发布时间: 2010-09-06

相关阅读 更多