## NAME

ACE_Local_Memory_Pool - Make a memory pool that is based on C++ new/delete. This is useful for integrating existing components that use new/delete into the ACE Malloc scheme...

## SYNOPSIS

    #include <ace/ACE_Memory_Pool.h>

    class ACE_Local_Memory_Pool
    {
      public:
        typedef ACE_Local_Memory_Pool_Options OPTIONS;
        ACE_Local_Memory_Pool (
            LPCTSTR backing_store_name = 0,
            const OPTIONS *options = 0
            );
        virtual ~ACE_Local_Memory_Pool (void);
        virtual void *init_acquire (
            size_t nbytes,
            size_t &rounded_bytes,
            int &first_time
            );
        virtual void *acquire (size_t nbytes, size_t &rounded_bytes);
        virtual int release (void);
        virtual int sync (ssize_t len = -1, int flags = MS_SYNC);
        virtual int sync (void *addr, size_t len, int flags = MS_SYNC);
        virtual int protect (ssize_t len = -1, int prot = PROT_RDWR);
        virtual int protect (
            void *addr,
            size_t len,
            int prot = PROT_RDWR
            );
        virtual void dump (void) const;
        ACE_ALLOC_HOOK_DECLARE;
      protected:
        ACE_Unbounded_Set<char *> allocated_chunks_;
        virtual size_t round_up (size_t nbytes);
    };

## PUBLIC MEMBERS

    typedef ACE_Local_Memory_Pool_Options OPTIONS;

    ACE_Local_Memory_Pool (
        LPCTSTR backing_store_name = 0,
        const OPTIONS *options = 0
        );

Initialize the pool.

    virtual ~ACE_Local_Memory_Pool (void);

    virtual void *init_acquire (
        size_t nbytes,
        size_t &rounded_bytes,
        int &first_time
        );

Ask system for initial chunk of local memory.

    virtual void *acquire (size_t nbytes, size_t &rounded_bytes);

Acquire at least NBYTES from the memory pool. ROUNDED_BYTES is the actual number of bytes allocated.

    virtual int release (void);

Instruct the memory pool to release all of its resources.

    virtual int sync (ssize_t len = -1, int flags = MS_SYNC);

Sync `len` bytes of the memory region to the backing store starting at `this-`base_addr_. If `len` == -1 then sync the whole region.

    virtual int sync (void *addr, size_t len, int flags = MS_SYNC);

Sync `len` bytes of the memory region to the backing store starting at `addr_`.

    virtual int protect (ssize_t len = -1, int prot = PROT_RDWR);

Change the protection of the pages of the mapped region to `prot` starting at `this-`base_addr_ up to `len` bytes. If `len` == -1 then change protection of all pages in the mapped region.

    virtual int protect (void *addr, size_t len, int prot = PROT_RDWR);

Change the protection of the pages of the mapped region to `prot` starting at `addr` up to `len` bytes.

    virtual void dump (void) const;

Dump the state of an object.

    ACE_ALLOC_HOOK_DECLARE;

Declare the dynamic allocation hooks.

## PROTECTED MEMBERS

    ACE_Unbounded_Set<char *> allocated_chunks_;

List of memory that we have allocated.

    virtual size_t round_up (size_t nbytes);

## AUTHOR

Doug Schmidt and Prashant Jain

## LIBRARY

ace