_strdup函数定义如下:
char * __strdup (const char *s)
{
size_t len = strlen (s) + 1;
void *new = malloc (len);
if (new == NULL)
return NULL;
return (char *) memcpy (new, s, len);
}
从定义明显看出,如果进行字符串拷贝,声明了动态空间,但是并没有释放,会发生内存泄露的问题,解决的方法有两点:
1. 对于拷贝完的字符串,用完之后手动释放,例如:
char *tmp=_strdup(str);
free(tmp);
2.尽量使用c++stl容器,比如string
string tmp=str;
string结束后,能够自动释放内存。