strdup與strcpy具體的區別,以及在不同操作系統下的使用。
strdup
原型:
extern char *strdup(char *s);
用法:#include <string.h>
功能:複製字符串s
說明:返回指向被複制的字符串的指針,所需空間由malloc()分配且可以由free()釋放。
舉例: // strdup.c
strcpy
原型:
extern char *strcpy(char *dest,char *src);
用法:#include <string.h>
功能:把src所指由NULL結束的字符串複製到dest所指的數組中。
說明:src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。 返回指向dest的指針。
舉例: // strcpy.c
strdup不是標準的C函數,strdup可以直接把要複製的內容複製給沒有初始化的指針(注意用完要free,否則出現內存泄露),因爲它會自動在堆上分配空間給目的指針;strcpy的目的指針一定是已經分配內存的指針。
strdup實現如下: