VC++6.0中类指针的有关问题

VC++6.0中类指针的问题
C/C++ code

class A
{

public:
    A()
    {
        b = 0;
    }

    int b;

    int a()
    {
        b++;
        return 0;
    }
};


void main()
{
    int a;
    A *test;




为什么这样的话,test = CCCCCCCC 呢?
在VC2008.NET的话就没有问题
求解

------解决方案--------------------
野指针没分配内存
------解决方案--------------------
你也没有初始化什么值都有可能
debug状态下会写0xCCCC
------解决方案--------------------
对于临时变量的初始化,是跟编译器有关的。而在windows下VC编译器在Debug模式下为了调试方便(确定越界),会将未初始化的临时变量全部写成0xcc,下面是汇编代码,看红色那一句。
int _tmain(int argc, _TCHAR* argv[])
{
00251350 push ebp
00251351 mov ebp,esp
00251353 sub esp,0D8h
00251359 push ebx
0025135A push esi
0025135B push edi
0025135C lea edi,[ebp-0D8h]
00251362 mov ecx,36h
00251367 mov eax,0CCCCCCCCh
0025136C rep stos dword ptr es:[edi]
int a;
A *test;
return 0;
0025136E xor eax,eax
}

其实对于你的代码不光是test,就是那个a,也是这样的,因为默认显示是10进制,你可以在aotu或者local窗口找到a变量右键,Hexadecimal Display,可以看到a变量也是0CCCCCCCC。
而release下就不会添加初始化了


------解决方案--------------------
没有初始化,什么值都是无意义的
------解决方案--------------------
野指针,0xcccccccc在汇编中表示int 3,就是中断。
调试时候默认是这个值,如果把这个值当成代码执行,就直接中断
------解决方案--------------------
探讨

我知道,但是为什么在VC++6.0中就有问题
VC2008.NET就没有问题呢

VS2008.NET就会创建一个指针并指向它,如果VC++6.0要做到同样的效果的话应该怎么做呢 ?
A test;

A *ptest;

ptest = &test;
难道要这样做?