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;
    }
  • 相关阅读:
    工学A B 刊物
    学习OpenCV
    MFC1
    csmath
    走进心理学
    第八篇: UpdateProgress 控件显示正在处理中的信息
    第十篇: Timer 控件
    第六篇: UpdatePanel 控件UpdateMode属性
    第九篇: UpdateProgress 控件用户中断
    第五篇: UpdatePanel 控件RegisterAsyncPostBackControl方法
  • 原文地址:https://www.cnblogs.com/jjtx/p/3605969.html
Copyright © 2011-2022 走看看