Chinaunix

标题: 关于 free 传入传出参数的问题 谢谢! [打印本页]

作者: wzy9854    时间: 2012-02-23 13:32
标题: 关于 free 传入传出参数的问题 谢谢!
本帖最后由 wzy9854 于 2012-02-23 13:34 编辑

int appendstring ( char** pDest, const char* pSrc )
{
int     iEnd;
        char    *pString ;


        pString = *pDest;
        if ( pSrc == (char*)NULL || strlen ( pSrc ) == 0 )
        {
                return ;
        }

        /* check src */
        if ( pString == (char*)NULL )
        {
                pString = (char*) malloc ( strlen(pSrc)+10 );/* allocate and copy */
                iEnd = 0;
        }
        else
        {

                iEnd = strlen(pString );
                pString = malloc(iEnd+strlen(pSrc)+10);
                memcpy(pString,*pDest,iEnd);
                pString[iEnd]=0;
                free(*pDest);              
                *pDest = NULL;
        }

        if(pString !=NULL)
        {
                memcpy(pString+iEnd,pSrc,strlen(pSrc));
                pString[strlen(pSrc)+iEnd]=0;
                *pDest = pString;
        }
        return ;
}
int main(void)
{
           char *buf = "abc" ;
           appendstring(&buf,"d");
           printf("%s",buf);
}
这是一个拼接字符串的函数,为什么free之后 会造成非法内存访问呢?悉心求教!
作者: wzy9854    时间: 2012-02-23 13:45
唉。。。白天人就是少啊。。。。
作者: ruifengzhangyi    时间: 2012-02-23 14:22
free的东西 你看看是神马,那个不能被free掉




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2