MFC单文档程序
float *farray=new float[1024*1024*100];
 程序运行成功后,400内存消失了?>??

解决方案 »

  1.   

    sizeof(float)*1024*1024*100 = 4 * 1024 * 1024 * 100 = 400M
      

  2.   

    不相信的话,你可以在MFC程序中单文档 构造函数中测试下.
    刚运行的时候还有,运行成功几秒后就没有了.
      

  3.   

    class CDTSClientApp : public CWinApp
    {
       float ****fDTSNumChanTemp;
    }
    C*****App::C****App()
    {
    fDTSNumChanTemp=NULL;
    fDTSNumChanTemp=new float ***[MAXCMPCOUNT];
    // int a1,a2,a3,a4;
    // a1=a2=a3=a4=0;
    CString str;
    // a1+=strlen((char*)fDTSNumChanTemp);//
    for(i=0;i<MAXCMPCOUNT;i++)
    {
    fDTSNumChanTemp[i]=new float **[MAXDTSNUM];
    // a2+=strlen((char*)fDTSNumChanTemp[i]);//
    for(j=0;j<MAXDTSNUM;j++)
    {
    fDTSNumChanTemp[i][j]=new float *[MAXCHANNELNUM];
    // a3+=strlen((char*)fDTSNumChanTemp[i][j]);//
    for(k=0;k<MAXCHANNELNUM;k++)
    {
    fDTSNumChanTemp[i][j][k]=new float [MAXFIBERLEN];
    // a4+=strlen((char*)fDTSNumChanTemp[i][j][k]);//
    }
    }
    }
    }
    你可以测试下.看分配的800M内存怎么没了?
      

  4.   


    //****.h
    class C*****App : public CWinApp
    {
      float ****fDTSNumChanTemp;
    }
    //****.cpp
    C*****App::C****App()
    {
    fDTSNumChanTemp=NULL;
    fDTSNumChanTemp=new float ***[MAXCMPCOUNT];
    // int a1,a2,a3,a4;
    // a1=a2=a3=a4=0;
    CString str;
    // a1+=strlen((char*)fDTSNumChanTemp);//
    for(i=0;i<MAXCMPCOUNT;i++)
    {
    fDTSNumChanTemp[i]=new float **[MAXDTSNUM];
    // a2+=strlen((char*)fDTSNumChanTemp[i]);//
    for(j=0;j<MAXDTSNUM;j++)
    {
    fDTSNumChanTemp[i][j]=new float *[MAXCHANNELNUM];
    // a3+=strlen((char*)fDTSNumChanTemp[i][j]);//
    for(k=0;k<MAXCHANNELNUM;k++)
    {
    fDTSNumChanTemp[i][j][k]=new float [MAXFIBERLEN];
    // a4+=strlen((char*)fDTSNumChanTemp[i][j][k]);//
    }
    }
    }
    }难道代码有问题?
      

  5.   

    想看效果吗 运行下这个
    int *p;
    while((p=new int[1024*1024]));
      

  6.   

    用 VirtualAlloc() 分配内存,然后用 VirtualLock() 锁定,就不会跑到 pagefile 里去了。不过,如果不是实时性要求很强的应用,犯不着这么做。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  7.   

    VirtualLock() 锁定内存,那实时性就不交换内存内容了??
      

  8.   

    用 VirtualAlloc() 分配内存,然后用 VirtualLock() 锁定,就不会跑到 pagefile 里去了。
    能更改锁定后的内存内容吗?
      

  9.   

    用 VirtualAlloc() 分配内存,然后用 VirtualLock() 锁定,就不会跑到 pagefile 里去了。
    能更改锁定后的内存内容吗?
      

  10.   

    你看一下VirtualAlloc的说明
    http://baike.baidu.com/view/1521481.htm#2
    VirtualAlloc可以要求分配物理内存而不仅仅是虚拟内存
      

  11.   

    锁定就是为了能放心地读/写,不用担心其它什么干扰。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)