class test
    {
        public:
            test()
            {
                //cout<<"test initializl"<<endl;
            }
    };    CMemoryState msOld, msNew, msDif; 
    msOld.Checkpoint();          test *pt=new test; //定义NEW了一个test指针
         pt = new(test); //??这里又定义一个test
       delete pt;   //这里删除了一次
    
    
    
    msOld.DumpAllObjectsSince(); 
    msNew.Checkpoint(); 
    msDif.Difference( msOld, msNew ); 
    msDif.DumpStatistics();
结果:
Object dump complete.
0 bytes in 0 Free Blocks.
1 bytes in 1 Normal Blocks.
0 bytes in 0 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 0 bytes.
Total allocations: 2 bytes.
 class test
    {
        public:
            test()
            {
                //cout<<"test initializl"<<endl;
            }
    };    CMemoryState msOld, msNew, msDif; 
    msOld.Checkpoint();          test *pt=new test; //定义NEW了一个test指针
       delete pt;   //这里删除了一次
    
    
    
    msOld.DumpAllObjectsSince(); 
    msNew.Checkpoint(); 
    msDif.Difference( msOld, msNew ); 
    msDif.DumpStatistics();结果:
Dumping objects ->
Object dump complete.
0 bytes in 0 Free Blocks.
0 bytes in 0 Normal Blocks.
0 bytes in 0 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 0 bytes.
Total allocations: 1 bytes.1字节和2字节的区别在。。?--请教有没有内存泄漏?--偶初学,不懂请指教

解决方案 »

  1.   

    sizeof(test) == 1
    第一个分配两次 总共分配的内存是两个test的大小2
    第一个分配两次 总共分配的内存是1一中分配
    1 bytes in 1 Normal Blocks.如果程序结束时还没有释放,那就是内存泄漏了.
      

  2.   

    前者有,后者没有
    其实所谓内存泄漏就是在程序运行中呈发散状态的内存分配,稳定的不算
    比如单件类顺便问一下上面兄弟,为什么sizeof(test)是1呢?我觉得理论上该是0
      

  3.   

    “顺便问一下上面兄弟,为什么sizeof(test)是1呢?我觉得理论上该是0”没有成员变量的结构或类的大小为1,因为必须保证结构或类的每一 个实例在内存中都有唯一的地址。