說明
功能:將字符串拷貝到新建的位置處
注意:strdup()在內部調用了malloc()爲變量分配內存,不需要使用返回的字符串時,需要用free()釋放相應的內存空間,否則會造成內存泄漏。
原型
char *strdup(const char *s);
頭文件:#include <string.h>
返回值
返回一個指針,指向爲複製字符串分配的空間。如果分配空間失敗,則返回NULL值。
實例
#include <stdio.h>
#include <string.h> //for strdup()
#include <stdlib.h> //for free()
int main(void)
{
char *dup_str, *string = "I am won";
dup_str = strdup(string);
printf("%s\n", dup_str);
free(dup_str);
return 0;
}
與之相關的函數
strdup, strndup, strdupa, strndupa
函數strdup() 與 函數strcpy() 的區別
strdup可以直接把要複製的內容複製給沒有初始化的指針,因爲它會自動分配空間給目的指針,需要手動free()進行內存回收。
strcpy的目的指針一定是已經分配(足夠)內存的指針