有关栈内存被破坏,栈内存溢出的问题
1.问题表象:Stack around the variable ‘arr1’ was corrupted,变量arr1周围的 栈内存空间被破坏
2.问题分析:这段代码编译可以通过,但是运行出现问题,属于运行时错误。究其原因,字符数组arr1没有显示指定其大小,而是通过字符串直接初始化,数组大小隐式的被规定为6个字节(5个英文字符加上一个 ‘\0’ ),而strcat函数会在字符数组arr1末尾添加上指定的字符序列(包括 ‘\0’ )。此时发生了越界访问数组内存空间的行为。
3.解决办法:通过显示指定数组的大小,保证数组的空间足够大,足以容纳拼接之后的字符串。如图: