危险的_strdup函数

来源:互联网 发布:js观察者模式应用 编辑:程序博客网 时间:2024/04/30 01:11

_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结束后,能够自动释放内存。

原创粉丝点击