關於strcpy以及strdup的區別

2021-05-26 22:58:21 字數 724 閱讀 6715

strdup與strcpy具體的區別:

[引]我分別在xp的環境和linux環境下編譯執行c**,我發現乙個不解的現象:

現象描述:

兩個字串 char* from, char* to;要把from的內容複製給to。

我在xp下,用strcpy(to, from)出現memory問題,於是換成

to = strdup(from),就執行正常。

而在linux下,用to = strdup(from)出現memory問題(報錯資訊:* glibc detected *** free(): invalid next size (fast): 0x09a8d868 ***),於是換成strcpy(to, from),就執行正常。

1,如何解釋我遇到的這種現象;

2,strdup與strcpy具體的區別,以及在不同作業系統下的使用。

謝謝!

---- 我自己在ubutu10.10上的實驗(gcc4.4.5)結果:

編譯過程沒有提示錯誤和警告資訊,但是執行的時候提示段錯誤!!

---- 一些不錯的解答

1, strdup可以直接把要複製的內容複製給沒有初始化的指標,因為它會自動分配空間給目的指標 ,使用之後要釋放相應記憶體

strcpy的目的指標一定是已經分配記憶體的指標

2, char *strdup(const char *s)

strcpy以及memcpy的實現

上過大學的計算機系的莘莘學子們,遺憾啊,在國產的教科書的惡臭的薰陶下,四年的青春流逝,悲哀啊!很幸運在大學中有很多研究gnu的人,這些人是幸運的,在學會了hello world之後就和國產教科書分道揚鑣了。前面的文章分析了strstr的各種實現,本文分析兩個更加普遍的函式,這就是strcpy以及me...

strcpy以及memcpy的實現

上過大學的計算機系的莘莘學子們,遺憾啊,在國產的教科書的惡臭的薰陶下,四年的青春流逝,悲哀啊!很幸運在大學中有很多研究gnu的人,這些人是幸運的,在學會了hello world之後就和國產教科書分道揚鑣了。前面的文章分析了strstr的各種實現,本文分析兩個更加普遍的函式,這就是strcpy以及me...

關於strcpy原始碼分析

注意到乙個帖子 strdest strsrc 0 哪兒前輩可以解釋下裡面具體執行的步驟呢?對於這樣的表示式,我們通常會有這樣三種看法 1.這種寫法不但沒有錯誤 當然也沒有bug 而且寫法緊湊。2.這種寫法雖然沒有錯誤,但是不夠直觀,理解起來有點麻煩,可能還會導致理解錯誤。3.這種寫法中存在未定義的地...