七年前学的C/C++,一直没有用过,脑子也不好使了,记忆力下降。
C语言中,变量在声明时,默认不初始化。
微软的 VC 编译器会将未初始化的栈空间以 16 进制的 0xCC 填充,而未初始化的堆空间使用 0xCD 填充,而 0xCCCC 和 0xCDCD 在中文的 GB2312 编码中刚好对应“烫”和“屯”字。
当一个字符串没有结束符“\0”,则直接输出的内存数据转换为字符串就正好对应着“烫烫…烫”和“屯屯…屯”。
因此,需要习惯在使用C语言进行声明时要初始化操作,稍有不慎,就会造成不可预知的后果。