- 论坛徽章:
- 0
|
int recvfd; // 一个网络套接字
char bufTmp[ 17 ];
char *strp = NULL;
char *ptmp = NULL;
int len = 0;
memset(bufTmp, '\0', sizeof(bufTmp));
while((n = read(recvfd, bufTmp, 16)) > 0)
{
printf("n=[%d]\n", n);
ptmp = (char*)realloc(strp, (16 + len) * sizeof(char)); // 问题在这里,原来只有一个“16”希望看到的可以起到提醒的作用
if (!ptmp)
{
free(strp);
return -1;
}
strp = ptmp;
printf("len[%d]\n", len);
memcpy(strp + len, bufTmp, 16);
printf("strp[%s]\n", strp);
len += n;
n = 0;
memset(bufTmp, '\0', sizeof(bufTmp));
}
*buf = strp;
===============================================
在第三次realloc时coredump段错误,费解。。。
我把memcpy那行注释掉就OK,但业务上等于零。。。
高手帮我看看怎么回事!谢谢!
[ 本帖最后由 linux_ha 于 2010-1-14 16:17 编辑 ] |
|