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