其实很简单,这些特殊的字符串其实就是堆栈里面的数据初始化问题。我们看一段简单的代码
我们在VC2005里面测试这段代码的效果,可以在 __asm nop ;这里打个断点,我们查看下局部变量就发现了这些神奇的字符串
看下内存就知道了,这里的屯其实就是0xcd , 烫就是0xcc , 췍 就是0xcdcd, 쳌就是0xcccc,因为后两个是unicode。
我们知道局部变量初始化在栈区,而malloc分配的内存则在堆区,而未初始化的的栈区就被置为0xcc,未初始化的堆区就被置为0xcd(unicode同) 。