好吧我就說說如果讀的話會怎麼樣。這就是最常見的字元串溢出,會一直往後讀到0x00或者直接爆掉內存。運氣好的話,這個字元數組後面是空白內存,也就是這個字元串變成了"12f";如果後面不是空內存而是跟著一個,比如說int32,就會被按照1byte讀出來,讀成4個byte,然後再往後讀到0x00為止。當然某些編譯器會把內存初始化為奇怪的東西,這時候就會一直輸出奇怪的字元,這就是「燙燙燙」這個梗的由來。


你如果再把它當C風格字元串來讀,它就會讀到天荒地老直到遇見一個 。良心的VC++在調試模式下會把你不該用的內存都初始化為0xCC或者0xCD,於是你就會看到一些奇怪的字元。不過更常見的現象是讀到這些字元的時候就直接調到VS裡面去告訴你遇到了一個斷點。
只是讀的話,倒沒什麼,只不過會一直讀下去,直到遇見 。如果再加上更改的話,那就慘了,它直接破壞了後面存儲的數據。

在單片機編程裡面,一般用串口發字元串的函數會有一句

while(*s!= )

來檢測字元串是否發完

如果你把這個改過屁股的字元串扔進去你會在串口助手收到除了"12"以外一堆很長的亂七八糟的東西


會藍屏,會爆炸,不要做就是了。


硬體可能會短路,然後爆炸


什麼都不會發生,但如果你輸出字元串的話會越界。幸好計算機內存中存在不少 .
它就從一個字元串變成一個字元數組了。

不會發生什麼,這就變成了一個普通的字元數組,你沒法拿來調用字元串api而已


推薦閱讀:
相关文章