因为初次接触C语言,所有写了个简单的转换的函数。
char* converType(const char* xmlContent) //频繁调用,所有xmlContent长度未知,outbuf没法给定长度
{
char* outbuf;
int nLen = strlen(xmlContent) + 1;
char* buf = (char*)malloc(sizeof(char) * nLen);
strcpy(buf,xmlContent);
outbuf = buf;
free(buf); //当free完成后,outbuf也受到影响,调试发现buf和outbuf地址一致
return outbuf;
}
注释处的buf和outbuf因为地址是一样的,导致返回outbuf之前内容又也被free了。
因为目前的需求是需要不断的调用这个函数,xmlContent的值不能确定,所有outbuf没有给定长度,不知道该用什么其他方法来解决这个问题,希望各位高手给点建议或者其他思路。
强烈不建议这样写。。
原因就是你说的如果调用者忘记free会导致内存泄漏
可以把函数声明为:
char* converType(const char* xmlContent, char* outbuf)
让申请和释放的工作都交给调用者(其实就变成了strcpy)