好吧我就说说如果读的话会怎么样。这就是最常见的字元串溢出,会一直往后读到0x00或者直接爆掉内存。运气好的话,这个字元数组后面是空白内存,也就是这个字元串变成了"12f";如果后面不是空内存而是跟著一个,比如说int32,就会被按照1byte读出来,读成4个byte,然后再往后读到0x00为止。当然某些编译器会把内存初始化为奇怪的东西,这时候就会一直输出奇怪的字元,这就是「烫烫烫」这个梗的由来。


你如果再把它当C风格字元串来读,它就会读到天荒地老直到遇见一个 。良心的VC++在调试模式下会把你不该用的内存都初始化为0xCC或者0xCD,于是你就会看到一些奇怪的字元。不过更常见的现象是读到这些字元的时候就直接调到VS里面去告诉你遇到了一个断点。
只是读的话,倒没什么,只不过会一直读下去,直到遇见 。如果再加上更改的话,那就惨了,它直接破坏了后面存储的数据。

在单片机编程里面,一般用串口发字元串的函数会有一句

while(*s!= )

来检测字元串是否发完

如果你把这个改过屁股的字元串扔进去你会在串口助手收到除了"12"以外一堆很长的乱七八糟的东西


会蓝屏,会爆炸,不要做就是了。


硬体可能会短路,然后爆炸


什么都不会发生,但如果你输出字元串的话会越界。幸好计算机内存中存在不少 .
它就从一个字元串变成一个字元数组了。

不会发生什么,这就变成了一个普通的字元数组,你没法拿来调用字元串api而已


推荐阅读:
相关文章