1.函式原型:
#include2.功能:char *strdup(const char *s);
strdup()函式主要是拷貝字串s的乙個副本,由函式返回值返回,這個副本有自己的記憶體空間,和s沒有關聯。strdup函式複製乙個字串,使用完後,要使用delete函式刪除在函式中動態申請的記憶體,strdup函式的引數不能為null,一旦為null,就會報段錯誤,因為該函式包括了strlen函式,而該函式引數不能是null。
3.strdup函式實現
char * __strdup(const char *s)
#strdup只是內部分配了空間,並沒有釋放,釋放需要由呼叫者去做。4.函式例項
#include1.共同點:#include
int main(void)
兩個函式都實現了字串的拷貝。
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之前已設定過鬧鐘時間,則任何以前的鬧鐘時間都被新...