打印乱码:锟斤拷、烫烫烫、屯屯屯、锘锘锘

文章讲述了程序员在编码和调试过程中遇到的特定暗语,如“锟斤拷”关联UTF-8和GBK编码冲突,烫烫烫和屯屯屯涉及VC编译器对未初始化栈区和堆区的默认值,以及对未知内容的探索。这些暗语反映了内存管理和编码转换的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序员专属暗语:

上联:手持两把锟斤拷,口中疾呼烫烫烫。

下联:脚踏千朵屯屯屯,笑看万物锘锘锘。

按照惯例,一图解千愁:

一、锟斤拷

UTF-8字符集,当出现目前无法显示的字符时,用一个占位符号0x ef bf bd(3Bytes大小)填充。

当出现一连串的无法显示字符时,会被填充为0x ef bf bd ef bf bd ......

当把这个UTF-8编码方式的数据以GBK编码方式打开时,就会出现问题了。

因为GBK是以2Bytes大小进行解码的,所以上述的(0x ef bf bd ef bf bd ......)就会解码为:

0x ef bf —— (GBK解码)

0x bd ef —— (GBK解码)

0x bf bd —— (GBK解码)

二、烫、屯

这个就不是字符集的问题了。

这要先说微软VC编码器的设置了,当进入debug模式时,会有以下情况:

1、未初始化栈区内存:

会被编译器设置为0xcc,其实也是对应着INT3软中断指令的机器码:0xcccc...

0x cc cc cc cc —— 烫烫烫烫 (GBK解码)

2、未初始化堆区内存:

会被编译器设置为0xcd

0x cd cd cd cd —— 屯屯屯屯 (GBK解码)

3、未初始化的堆内存前后会有一个4B的围栏:

围栏:0x fd fd fd fd

4、销毁的堆区内存:

会被设置为:0x dd dd dd dd

三、锘锘锘

(我不知道了,目前没见过,见到了再补充)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值