调试模式下VS会给栈内存加上额外的保护段并且用0xCC填充,0xCC在x86下是INT 3指令,这个指令会触发断点,这样调试器就可以发现程序因为越界覆盖了返回地址之类的各种各样的原因执行到了堆栈数据里面……
堆当中则会用0xCD来填充,也就是“屯屯屯屯屯”
屯和烫都是GBK编码的结果,所以只有简体中文Windows,而且程序链接了ANSI版本的API才会显示这个。现代的程序可以选择使用UTF-16的Unicode版本的库,这种情况下会变成韩文쳌쳌쳌쳌。
如果是台湾(BIG-5)则会显示“昍昍昍”,日本(Shift-JIS)应该会显示“フフフフフフ”
从Google搜索的结果来看,这几个字也是广为世界人民困扰的魔咒