linux C函式之strdup函式分析

2021-09-20 19:48:14 字數 941 閱讀 8800

1.函式原型:

#include 

char *strdup(const char *s);

2.功能:

strdup()函式主要是拷貝字串s的乙個副本,由函式返回值返回,這個副本有自己的記憶體空間,和s沒有關聯。strdup函式複製乙個字串,使用完後,要使用delete函式刪除在函式中動態申請的記憶體,strdup函式的引數不能為null,一旦為null,就會報段錯誤,因為該函式包括了strlen函式,而該函式引數不能是null。

3.strdup函式實現

char * __strdup(const char *s)

#strdup只是內部分配了空間,並沒有釋放,釋放需要由呼叫者去做。

4.函式例項

#include 

#include

int main(void)

1.共同點:

兩個函式都實現了字串的拷貝。

2.不同點:

1)strcpy函式:把從src位址開始且含有null結束符的字串複製到以dest開始的位址空間

2)實現:

char *strcpy(char *strdest,const char *strsrc)

3)由strcpy和strdup函式實現可知

1>strdup函式返回指向被複製的字串的指標,所需空間由malloc()函式分配且可以由free()函式釋放。stdrup可以直接把要複製的內容複製給沒有初始化的指標,因為它會自動分配空間給目的指標。

2>strcpy的目的指標一定是已經分配好的記憶體指標。

4)strdup的缺點:

使用strdup函式的時候,往往會忘記記憶體的釋放,因為申請記憶體空間的動作是在strdup函式內實現,如果對該函式的實現不是很了解,則會忘記使用free函式來釋放空間。

strdup函式的用法

函式名 strdup 功 能 將串拷貝到新建的位置處 用 法 char strdup char str 這個函式在linux的man手冊裡解釋為 the strdup function returns a pointer toa new string which is a duplicate of ...

linux C之alarm函式 更改

alarm也稱為鬧鐘函式,alarm 用來設定訊號sigalrm在經過引數seconds指定的秒數後傳送給目前的程序。如果引數seconds為0,則之前設定的鬧鐘會被取消,並將剩下的時間返回。要注意的是,乙個程序只能有乙個鬧鐘時間,如果在呼叫alarm之前已設定過鬧鐘時間,則任何以前的鬧鐘時間都被新...

linux C之alarm函式 更改

alarm也稱為鬧鐘函式,alarm 用來設定訊號sigalrm在經過引數seconds指定的秒數後傳送給目前的程序。如果引數seconds為0,則之前設定的鬧鐘會被取消,並將剩下的時間返回。要注意的是,乙個程序只能有乙個鬧鐘時間,如果在呼叫alarm之前已設定過鬧鐘時間,則任何以前的鬧鐘時間都被新...