我試過解決這個問題,只是沒有結果,我希望你可以暗示我在正確的方向。我有一個程序,我初始化字符數組是這樣的:C程序崩潰後strcpy
char variable1[8];
然後我試圖複製一個函數,即
...
strcpy(variable1, (char *)function1());
其中功能1()返回字符數組值的返回值。 這裏是功能1的結構:
char* function1()
{
....
char variable2[8]={'\0'};
...
return (variable2);
}
程序,當我嘗試執行的strcpy線崩潰。
我已經閱讀strcpy函數here是
重要:您必須確保目標緩衝區(S1)是能夠包含源陣列中的所有字符,包括終止空字節。否則,的strcpy()將覆蓋存儲器過去緩衝區的末尾,引起緩衝區溢出,這可能導致程序崩潰
因此,我試圖增加變量1大小爲20,但仍程序崩潰。
除此之外,我嘗試了不同的方法,即使用strncpy函數調用,它仍然給我同樣的錯誤。
奇怪的是我可以執行function1(),它返回一個沒有問題的值。只有當我試圖複製它時,我的程序崩潰了。任何想法接下來我應該做什麼?
瞭解如何使用調試器。向編譯器詢問它可以給你的所有警告(例如'gcc -Wall -Wextra'),然後改進你的源代碼直到沒有給出警告。 – 2012-04-03 07:05:53