psa zzz = new sa;
怎么能这样??
psa *zzz = new sa;

解决方案 »

  1.   

    我没写错:
    typedef struct
    {
        DWORD aaa[2];
        DWORD bbb[2];
    }sa, *psa;
      

  2.   


    应该是堆栈溢出,如果在程序里多次重入引起死循环,会用尽堆栈的内存,最后剩些内存碎片,会造成new失败...
      

  3.   


    但是,我得到的结果是死循环,没有报告错误
    Windows98,VC++ 6.0,默认设置
      

  4.   

    把你的下面的createThread(...)注释掉看看?int main()
    {
    //    CreateThread(NULL, 0, ct, NULL, 0, NULL);  // 将它去掉
        while (1)
        {
            psa zzz = new sa;
            delete zzz;
        }
        return 
      

  5.   

    没出错啊 我在vc6 sp4下 是死循环 按 ^c 退出的 在 debug 和release下都是
      

  6.   



    CreateThread(NULL, 0, ct, NULL, 0, NULL);
    失败了
      

  7.   

    win2000\NT:
    CreateThread(NULL, 0, ct, NULL, 0, NULL); win9x:
    DWORD dwThreadID;
    CreateThread(NULL, 0, ct, NULL, 0, &dwThreadID); 
      

  8.   

    在我的机器上运行会出错,createthread越多出错越快。
      

  9.   



    CreateThread(NULL, 0, ct, NULL, 0, &dwThreadID);
    出错了.
      

  10.   



    CreateThread(NULL, 0, ct, NULL, 0, &dwThreadID); 
    导致的错误.
      

  11.   

    有CreateThread(NULL, 0, ct, NULL, 0, NULL); 的时候我(你 ^&^)的程序出现错误!没有的时候是正确的!我的想法是创建了一个线程,但是主程序处于死循环,分配给子线程的时间片为0,所以error!实际是这样解释的吗?
      

  12.   

    不是createThread() 导致的错误!  它是执行成功了才进入循环的!而是其他的原因!……
      

  13.   

    语法上应该没有问题的。很可能是Run time library的问题
    我刚在VC上做了测试,发现了问题的所在:
    工程设置里面,C/C++,Category的Code Generation的Use runtime library选项
    有单线程和多线程的设置,Console程序的缺省是单线程,运行你的程序,就会出错。
    改成多线程,就没事儿了。C++的new 和 delete是要靠运行库来支持的,VC的运行库是分单线程和多线程的,这应该就是问题所在了:)平常写Consle程序的时候,别忘了缺省设置是单线程,必要时要改过来:)
      

  14.   

    它出错的随机性十分强!有时 运行几次,有时运行一百多次  (while())
      

  15.   

    改了多线程之后就没有问题了!谢谢了!taolei()  ^&^