色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > strcpy和strdup比較和詳解

          strcpy和strdup比較和詳解

          發(fā)布人:電子禪石 時間:2021-06-16 來源:工程師 發(fā)布文章

          strcpy和strdup比較和詳解

          函數(shù)和功能描述:

          ①extern char *strdup(char *s);


          頭文件:string.h


          功能: 將串拷貝到新建的位置處


          說 明:strdup不是標準的c函數(shù)。strdup()在內部調用了malloc()為變量分配內存,不需要使用返回的字符串時,需要用free()釋放相應的內存空間,否則會造成內存泄漏。

          返回值:返回一個指針,指向為復制字符串分配的空間;如果分配空間失敗,則返回NULL值。


           // strdup.c


          #include <syslib.h>


          #include <string.h>


          main() 



           char *s="Golden Global View";


          char *d;


           d=strdup(s);


          printf("%s",d);


          return 0;


          }


          ②char *strcpy(char* dest, const char *src);


          頭文件:#include <string.h>和 #include <stdio.h>


          功能:把從src地址開始且含有NULL結束符的字符串復制到以dest開始的地址空間


          說明:strcpy是標準的C語言標準庫函數(shù)。src和dest所指內存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。


          返回值:返回指向dest的指針。


           舉例:


           // strcpy.     


                #include <syslib.h>


           #include <string.h>     


           main()


            {        


          char *s="Golden Global View";


          char d[20]; 


          printf("%s",d);       


           return 0;    


            }


          總結:

          1.strdup不是標準的c函數(shù),strcpy是標準的c函數(shù),使用時注意場合。

          2.strdup可以直接把要復制的內容復制給沒有初始化的指針,因為它會自動分配空間給目的指針,strcpy的目的指針一定是已經(jīng)分配內存的指針。

          3.strdup用完要free()函數(shù)釋放內存,否則內存泄露 。

          4.使用strcpy必須事先確定src大小,可以先strlen判斷src的大小,之后為dest申請空間,之后再strcpy就不會有問題了。

          ————————————————


          原文鏈接:https://blog.csdn.net/koozxcv/article/details/49306751


          *博客內容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



          關鍵詞: strdup

          技術專區(qū)

          關閉