2011-09-22 129 views
1

可能重複:
Getting Segmentation Faultstrcpy()導致分段錯誤?

爲什麼這個代碼導致段錯誤?

char *text = "foo"; 
strcpy(text, ""); 

據我的理解,第一行分配一些內存(持有字符串「foo」)和text指向分配的內存。第二行將一個空字符串複製到text指向的位置。

此代碼可能沒有多大意義,但它爲什麼會失敗?

+1

看看搜索結果。看他們!@#! http://stackoverflow.com/search?q=strcpy+segmentation+fault – quasiverse

+0

什麼是最好的重複?我無法輕鬆找到它。 – erisco

+2

它們並非全部重複,但錯誤通常是相同的。 – Mysticial

回答

4

每當你有一個字符串文字(在你的情況下,「foo」),程序將該值存儲在只讀部分內存中。

strcpy想要修改該值,但它是隻讀的,因此存在分段錯誤。

此外,text應該是一個const char*,而不是一個char*

0

因爲字符串文字(如"foo")是只讀

0

因爲字符串文字存儲在內存的只讀區域。

因此,嘗試修改foo(在這種情況下使用strcpy)是未定義的行爲