zoukankan      html  css  js  c++  java
  • code project 上的内存管理的示例代码

    /********************************************************************
        created:    2014/03/17 18:53
        filename:    main.cpp
        author:        Justme0 (http://blog.csdn.net/justme0)
    
        purpose:    code project 内存管理
    *********************************************************************/
    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include <new>
    using namespace std;
    
    //    Overload the new operator
    void *operator new ( size_t size , bool isAllocFailure )
    {
        if ( isAllocFailure )
            return NULL;
        else
        {
            try
            {
                void *Memory    =    ::operator new ( size );
                return Memory;
            }
            catch ( std::bad_alloc )
            {
                return NULL;
            }
        }
        return NULL;
    }
    
    //    Overload placement delete operator so that exceptions from
    //    constructors can be handled
    void operator delete ( void * Memory , bool isAllocFailure )
    {
        ::delete Memory;
    }
    
    void    SimpleFunction ( int MemCounter , bool AllFail )
    {
    
        int        LocalCounter = 0;
        char    *Mem1    =    new ( ( MemCounter == LocalCounter ++ ) || AllFail ) char [ 32 ];
        if ( Mem1 != NULL )
            strcpy ( Mem1 , "First Memory" );
    
        char    *Mem2    =    new ( ( MemCounter == LocalCounter ++ ) || AllFail ) char [ 32 ];
        if ( Mem2 != NULL )
            strcpy ( Mem2 , "Second Memory" );
    
        int        NumTimesLoop    =    10;
        int        LoopCounter        =    0;
    
        //    Create a Variable that will be allocate Inner Memory
        char    **InnerMemory    =    new ( ( MemCounter == LocalCounter ++ ) || AllFail ) char * [ NumTimesLoop ];
    
        //    Loop through and allocate the memory required    
        for ( LoopCounter = 0; LoopCounter < NumTimesLoop ; LoopCounter ++ )
        {
            InnerMemory [ LoopCounter ] = new ( ( MemCounter == LocalCounter ++ ) || AllFail ) char [ 32 ];
        }
    
    
    }
    
    
    int main()
    {
        for ( int counter = 0; counter < 12; counter ++ )
            SimpleFunction ( counter , false );
        SimpleFunction ( -1 , true );
    
        return 0;
    }
  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/jjtx/p/3605969.html
Copyright © 2011-2022 走看看