C语言中的strdup()函数和其与strcpy()函数的区别
头文件: #include <string.h> 定义函数: char * strdup(const char *s); 函数说明:strdup()会先用maolloc()配置与参数s 字符串相同的空间大小,然后将参数s 字符串的内容复制到该内存地址,然后把该地址返回。该地址最后可以利用free()来释放。 返回值:返回一字符串指针,该指针指向复制后的新字符串地址。若返回NULL 表示内存不足。 范例 #include <string.h> main(){ char a[] = "strdup"; char *b; b = strdup(a); printf("b[]="%s"n",b); } 执行结果: b[]="strdup" strdup()函数与strcpy()函数的区别 strdup可以直接把要复制的内容复制给没有初始化的指针,因为它会自动分配空间给目的指针,使用结束 最近在看别人编写的c语言源代码,很多人喜欢使用strdup来复制字符串,我觉得这个习惯不好,因为如果想使自己的程序移植性更好的话, 我觉得,在模块中,除非万不得已自己分配的内存需要其他模块释放,否则应该自产自销,尽量避模块之间的这种耦合性,减少内存泄漏的因素。 char *dest = malloc( strlen( src ) + 1 ); assert( dest != NULL ); strcpy( dest,src ); 经常要被使用,写3行代码比较罗嗦,那么不妨使用宏来搞定它吧。这样做的好处是确定了内存是用malloc分配的,移植性好多了,难道不是吗?!此外,自己定义的宏,分配内存后要释放,总不会忘记吧 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |