level 1
其实已经溢出了的。造成这个结果的原因有两点:①使用printf输出字符串时,判断字符串结束的标志是字符'\0';②使用strcpy复制字符串时,把含有'\0'结束符的字符串复制到另一个地址空间。
在这个例子里是把字符串"To be not to be"复制到以b为首地址的内存空间,因为字符数组b的大小装不下这个字符串,所以发生溢出,字符数组b之外内存空间也被改写。而printf在输出的时候是根据是否遇到'\0'来判断是否到达字符串的结尾,而不是通过字符数组的大小来判断是否到达字符串的结尾,所以还是会正确输出字符串。
综上,发生了内存溢出,但字符串依然能够正确输出。
2021年01月03日 06点01分


