ACE_Static_Allocator_Base(3)

ACE_Static_Allocator_Base3

Defines a class that provided a highly optimized memory management scheme for allocating memory statically.

Usage

#include <ace/Malloc.h>
class ACE_Static_Allocator_Base : public ACE_Allocator
{
  public:
    ACE_Static_Allocator_Base (char *buffer, size_t size);
    virtual void *malloc (size_t nbytes);
    virtual void *calloc (size_t nbytes, char initial_value = ' ');
    virtual void free (void *ptr);
    virtual int remove (void);
    virtual int bind (
        const char *name,
        void *pointer,
        int duplicates = 0
        );
    virtual int trybind (const char *name, void *&pointer);
    virtual int find (const char *name, void *&pointer);
    virtual int find (const char *name);
    virtual int unbind (const char *name);
    virtual int unbind (const char *name, void *&pointer);
    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 print_stats (void) const;
    virtual void dump (void) const;
  protected:
    ACE_Static_Allocator_Base (void);
    char *buffer_;
    size_t size_;
    size_t offset_;
};

Overview

This class manages a fixed-size POOL_SIZE of memory. Every time malloc/calloc is called, it simply moves an internal index forward and returns a pointer to the requested chunk. All memory is allocated statically (typically via the ACE_Static_Allocator template) and free is a no-op. This behavior is useful for use-cases where all the memory allocation needs are known in advance and no deletions ever occur.

Public members

ACE_Static_Allocator_Base (char *buffer, size_t size);
virtual void *malloc (size_t nbytes);
virtual void *calloc (size_t nbytes, char initial_value = ' ');
virtual void free (void *ptr);
virtual int remove (void);
virtual int bind (
    const char *name,
    void *pointer,
    int duplicates = 0
    );
virtual int trybind (const char *name, void *&pointer);
virtual int find (const char *name, void *&pointer);
virtual int find (const char *name);
virtual int unbind (const char *name);
virtual int unbind (const char *name, void *&pointer);
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 print_stats (void) const;
virtual void dump (void) const;

Protected members

ACE_Static_Allocator_Base (void);

Don't allow direct instantiations of this class.

char *buffer_;

Pointer to the buffer.

size_t size_;

Size of the buffer.

size_t offset_;

Pointer to the current offset in the buffer_.

Library

ace

Author

Doug Schmidt and Irfan Pyarali

From libace-doc 5.0.7-4 in Debian 2.2 (Potato). Parsed by carta from the page's man source.