-6
我使用一個64位linux
機器,所以我的指針的大小是8個字節,所以看下面的代碼,我寫了下面的程序段落H
在我的字符串(在strcpy()
)。但似乎並沒有發生。在下面的程序中,我認爲它會溢出並破壞x
中的內存。這下面的程序在我的系統上運行良好,但如果我在strcpy()
中添加另一個字母,它會出現段錯誤。所以這樣的問題顯然與系統有關,但是這個字符串是如何不使程序崩潰的呢?我確實在尋找這樣一個問題,如果有一些鏈接存在,你也可以指導我。提前致謝。如何在C中處理字符串?
int main()
{
int x;
char* c ;
x = 0xF0000000;
strcpy(&c,"ABCDEFGHFFFFFF");
x++;
printf("%X\n",x);
printf("%s\n",&c);
}
我看到你已經聲明瞭一個指針......但它指向什麼? – 2014-09-22 20:48:08
當然它要和警告編譯,但它確實給我一個輸出爲以下 'F0000001 ABCDEFGHFFFFFF' 我現在這肯定你如何寫常規程序,我只是想看看字符串被複制,你是大家一定沒有答案。 – 2014-09-22 20:52:19
你的程序簡直就是UB,沒什麼有用的爭論。如果你想知道在特定運行情況下你的情況究竟是什麼,請將調試器分解出來並單步執行。請注意,使用調試器可能會改變程序行爲。 – Deduplicator 2014-09-22 20:54:42