Пример #1
0
static void     test_foo( void )
{
    char                        tiny_buf[sizeof(Foo) - 1];
    sbe::FixedAllocator<Foo>    tiny_alloc( tiny_buf, sizeof(tiny_buf) );
    
    SBE_ASSERT( tiny_alloc.allocate() == NULL );
    
    //-------------------------------------------------------//
    
    char                        buf[sizeof(Foo) * 3 + 4];
    sbe::FixedAllocator<Foo>    alloc( buf, sizeof(buf) );
    
    Foo*       ptr[3];
    
    for (size_t  i = 0; i < 3; ++i)
    {
        ptr[i] = alloc.allocate();
        SBE_ASSERT( ptr[i] != NULL );
    }
    
    SBE_ASSERT( alloc.allocate() == NULL );
    
    for (size_t  i = 0; i < 3; ++i)
    {
        alloc.deallocate( ptr[i] );
    }
    
    SBE_ASSERT( alloc.test() );
    
    std::cout << "Test: 'test_foo' - " << "PASSED" << std::endl;
}
Пример #2
0
void *cgc_malloc_alloc(malloc_t *heap, cgc_size_t n)
{
    void *ptr;

    if (n > MAX_SIZE)
        return NULL;

    n = ALIGNED(n, 4);

    if (n < TINY_SIZE)
        ptr = tiny_alloc(heap, TINY_SIZE);
    else if (n < SMALL_SIZE)
        ptr = tiny_alloc(heap, n);
    else if (n < LARGE_SIZE)
        ptr = small_alloc(heap, n);
    else
        ptr = large_alloc(heap, n);

    return ptr;
}