回覆列表
  • 1 # 使用者4819233669973

    首先 str1[] = "Hello "; 在棧上取了 7 位元組的記憶體空間。根據 C++ Reference 的說明,char* strcat ( char* destination, const char* source );Concatenate stringsAppends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the first character of source, and a null-character is included at the end of the new string formed by the concatenation of both in destination.destination and source shall not overlap.我們可以明顯地發現這個函式是把 source 指標的內容直接複製到 destination 指標指向的字串末尾的。所以這個問題很簡單,就是陣列不夠大儲存 strcat() 之後的結果。至於為什麼在 Linux 沒崩潰則是因為超出陣列容量這個是一個未定義的行為。編譯器可以自由選擇如何處理這個情況。應該是 GCC 幫你最佳化掉了。

  • 中秋節和大豐收的關聯?
  • 如何看待英特爾新CEO釋出的公開信?