亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言中的strdup()函數和其與strcpy()函數的區別

2020-01-26 14:57:37
字體:
來源:轉載
供稿:網友

頭文件:

#include <string.h>

定義函數:

char * strdup(const char *s);

函數說明:strdup()會先用maolloc()配置與參數s 字符串相同的空間大小,然后將參數s 字符串的內容復制到該內存地址,然后把該地址返回。該地址最后可以利用free()來釋放。

返回值:返回一字符串指針,該指針指向復制后的新字符串地址。若返回NULL 表示內存不足。

范例

#include <string.h>main(){  char a[] = "strdup";  char *b;  b = strdup(a);  printf("b[]=/"%s/"/n", b);}

執行結果:

b[]="strdup"

strdup()函數與strcpy()函數的區別
strdup不是標準的c函數,所以linux會報錯!~
strcpy是標準的c函數,在windows里報錯是因為指針沒申請空間吧!~
可以先strlen判斷from的大小,之后為to申請空間,之后再strcpy就不會報錯了!~

strdup可以直接把要復制的內容復制給沒有初始化的指針,因為它會自動分配空間給目的指針,使用結束
后要手動釋放系統自動分配的空間
strcpy的目的指針一定是已經分配內存的指針

最近在看別人編寫的c語言源代碼,很多人喜歡使用strdup來復制字符串,我覺得這個習慣不好,因為如果想使自己的程序移植性更好的話,
就忘記有這個函數吧。我否定它的主要原因是:
1)用strdup函數的時候,往往我們會忘記內存的釋放,可能的原因是對于C庫函數的了解不夠,畢竟是其他模塊分配內存,自己模塊釋放它。
2) 在不同的平臺上,我們對于strdup內存分配的函數可能采用不同的方法,比如在某些c庫中用malloc來分配,而在某些c++庫中,用new來分配 (因為c++庫可能重寫了相關的c庫代碼)。所以對使用者在釋放它的時候產生了很大的疑惑,是用free還是用delete[]來釋放所分配的內存呢?! 如果我們主管臆斷,用free來釋放它,操作未知??赡芄ぷ髡?,可能是部分內存泄漏,也可能是程序崩潰。自己程序的正確性依賴于編譯器,很不爽吧!

我覺得,在模塊中,除非萬不得已自己分配的內存需要其他模塊釋放,否則應該自產自銷,盡量避模塊之間的這種耦合性,減少內存泄漏的因素。
那么讀者可能會問,如果字符串復制經常用到,類似于下面的一個代碼

char *dest = malloc( strlen( src ) + 1 );assert( dest != NULL );strcpy( dest, src );

經常要被使用,寫3行代碼比較羅嗦,那么不妨使用宏來搞定它吧。這樣做的好處是確定了內存是用malloc分配的,移植性好多了,難道不是嗎?!此外,自己定義的宏,分配內存后要釋放,總不會忘記吧

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩免费一区| 国产精品一区久久久| 国产精品国产三级国产aⅴ浪潮| 综合激情国产一区| 91精品久久久久久久久久入口| xxx一区二区| 久久久黄色av| 国产日韩欧美自拍| 在线成人免费网站| 欧美一级视频在线观看| 国产自摸综合网| 欧美又大又硬又粗bbbbb| 精品国产自在精品国产浪潮| 国产日韩换脸av一区在线观看| 亚洲www永久成人夜色| 久久精品国产一区二区三区| 欧美日本中文字幕| 国产裸体写真av一区二区| 日韩大陆毛片av| 精品丝袜一区二区三区| 国模精品视频一区二区| 亚洲欧洲国产精品| 日韩成人小视频| 午夜精品久久久久久久99热| 日韩美女视频在线观看| 日韩精品在线看| 成人a级免费视频| 亚洲福利在线看| 国产成人亚洲综合| 国产精品免费看久久久香蕉| 欧美一区三区三区高中清蜜桃| 第一福利永久视频精品| 日韩成人av在线播放| 视频在线观看99| 欧美一级视频在线观看| 日韩大片在线观看视频| 亚洲性av网站| 成人h视频在线观看播放| 成人在线精品视频| 亚洲精品97久久| 亚洲综合社区网| 亚洲18私人小影院| 中文字幕在线国产精品| 国产999在线| 国产成人在线一区| 亚洲国模精品私拍| 色香阁99久久精品久久久| 欧美在线视频a| 播播国产欧美激情| 成人网在线免费看| 亚洲国产一区二区三区四区| 91丨九色丨国产在线| 久久久久久中文| 亚洲在线观看视频网站| 久久久久久久一| 国产精品九九久久久久久久| 大胆人体色综合| 久久精品国产91精品亚洲| 国产美女久久久| 日韩电影在线观看免费| 成人黄色av网站| 亚洲精品国产成人| 国产精品亚洲自拍| 精品日韩中文字幕| 91精品美女在线| 日韩在线一区二区三区免费视频| 91免费精品国偷自产在线| 97精品视频在线观看| 久久久av一区| 97av在线影院| 亚洲高清一区二| 欧美性xxxxx极品| 国产精品久久久| 在线播放国产一区二区三区| 国内揄拍国内精品| 欧美另类老女人| 91午夜理伦私人影院| 亚洲一区二区三区在线视频| 福利一区视频在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 黑人狂躁日本妞一区二区三区| 色先锋资源久久综合5566| 色无极影院亚洲| 国产精品极品美女在线观看免费| 亚洲男人av电影| 欧日韩在线观看| 欧美丰满少妇xxxxx做受| 68精品久久久久久欧美| 欧美亚洲国产成人精品| 国产精品女人久久久久久| 91香蕉亚洲精品| 91亚洲国产精品| 欧美一级淫片videoshd| 精品国产乱码久久久久酒店| 久久777国产线看观看精品| 97国产精品免费视频| 亚洲国语精品自产拍在线观看| 亚洲91精品在线观看| 欧美丝袜一区二区三区| 日韩av在线免费播放| 91情侣偷在线精品国产| 综合久久五月天| www.亚洲男人天堂| 亚洲成人国产精品| 欧洲亚洲在线视频| 国产精品女人久久久久久| 亚洲欧洲成视频免费观看| 日韩成人激情视频| 中文字幕视频在线免费欧美日韩综合在线看| 欧美性资源免费| 国内自拍欧美激情| 精品国产区一区二区三区在线观看| 久久久91精品国产| 性欧美暴力猛交69hd| 欧美性猛交xxxx久久久| 国产精品九九久久久久久久| 国产有码一区二区| 亚洲国产小视频| 欧美有码在线视频| 国产91精品久久久久久| 国产网站欧美日韩免费精品在线观看| 亚洲欧美国产精品久久久久久久| 欧美精品午夜视频| 亚洲精品99999| 亚洲奶大毛多的老太婆| 欧美一区亚洲一区| 91亚洲精品久久久久久久久久久久| 久久人人爽国产| 国产欧美一区二区三区四区| 亚洲色图18p| 性金发美女69hd大尺寸| 亚洲最大的成人网| 日韩在线视频中文字幕| 国产精品视频一区二区高潮| 欧美疯狂做受xxxx高潮| 欧美极品少妇全裸体| 亚洲一区二区三区sesese| 日本不卡免费高清视频| 中文字幕在线亚洲| 日韩av在线免费播放| 欧美视频在线观看免费| 欧美日韩一区二区在线播放| 米奇精品一区二区三区在线观看| 欧美色图在线视频| 日韩av电影手机在线观看| 国产视频久久网| 国产精品自产拍高潮在线观看| 亚洲综合视频1区| 日韩有码在线播放| 国产小视频国产精品| 成人国产精品久久久| 国产一区二区在线播放| 国产精品成久久久久三级| 国产精品成人久久久久| 97精品视频在线播放| 国产精品视频最多的网站| 91久久精品视频| 国产欧美欧洲在线观看| 国产亚洲精品一区二区| 日日骚av一区| 久久综合国产精品台湾中文娱乐网| 久久免费视频网| 国产精品成人品| 国产成人一区二区三区电影|