有没有大佬帮忙解释一下
c吧
全部回复
仅看楼主
level 1
Ge丶余晖 楼主
为什么没有发生溢出现象?有没有大佬解释一下这个是什么意思;
2021年01月02日 11点01分 1
level 1
其实已经溢出了的。造成这个结果的原因有两点:①使用printf输出字符串时,判断字符串结束的标志是字符'\0';②使用strcpy复制字符串时,把含有'\0'结束符的字符串复制到另一个地址空间。
在这个例子里是把字符串"To be not to be"复制到以b为首地址的内存空间,因为字符数组b的大小装不下这个字符串,所以发生溢出,字符数组b之外内存空间也被改写。而printf在输出的时候是根据是否遇到'\0'来判断是否到达字符串的结尾,而不是通过字符数组的大小来判断是否到达字符串的结尾,所以还是会正确输出字符串。
综上,发生了内存溢出,但字符串依然能够正确输出。
2021年01月03日 06点01分 2
level 6
有问题可以进来大佬们免费解答
2021年01月04日 12点01分 3
1