首页 > 其他 > 详细

code project 上的内存管理的示例代码

时间:2014-03-17 21:25:31      阅读:539      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
/********************************************************************
    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;
}
bubuko.com,布布扣

code project 上的内存管理的示例代码,布布扣,bubuko.com

code project 上的内存管理的示例代码

原文:http://www.cnblogs.com/jjtx/p/3605969.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!