Annotation of researchv10dc/man/adm/man3/pool.3, revision 1.1.1.1

1.1       root        1: .TH POOL 3+
                      2: .CT 2 datatype
                      3: .SH NAME
                      4: pool \- fast memory allocation
                      5: .SH SYNOPSIS
                      6: .nf
                      7: .B #include <Pool.h>
                      8: .PP
                      9: .ft L
                     10: struct Pool {
                     11:        Pool(unsigned);
                     12:        ~Pool();
                     13:        void* alloc();
                     14:        void free(void*)
                     15: };
                     16: .fi
                     17: .SH DESCRIPTION
                     18: .PP
                     19: Every
                     20: .L Pool
                     21: is a collection of
                     22: .IR elements ,
                     23: each of which is an array of bytes.
                     24: All elements of a pool
                     25: are the same size.
                     26: Pool functions are
                     27: .nr xx \w'\fIp\fL.free(\fIep\fL)\ '
                     28: .TP \n(xxu
                     29: .BI Pool( n )
                     30: Construct a pool whose elements are of size
                     31: .I n.
                     32: .TP
                     33: .IB p .alloc()
                     34: Allocate a new element in pool
                     35: .LR p .
                     36: Return a pointer to the element.
                     37: .TP
                     38: .IB p .free( ep )
                     39: Free the element of
                     40: .I p
                     41: pointed to by
                     42: .I ep.
                     43: The element must
                     44: have been allocated from
                     45: .I p.
                     46: .PP
                     47: Destroying a pool
                     48: frees all the memory occupied by its elements.
                     49: .PP
                     50: The memory in a pool element is aligned on
                     51: the same boundary as memory returned by
                     52: .IR malloc (3)
                     53: so that it may be used to contain an
                     54: object of any type.
                     55: In typical use, there would be one pool per class, with
                     56: the pool known only to the 
                     57: .B new
                     58: and
                     59: .B delete
                     60: operators of that class.
                     61: .SS Performance
                     62: Pool memory is allocated in chunks that are typically
                     63: about 1,000 bytes each.
                     64: Once a chunk is allocated to a particular pool,
                     65: that chunk is only released when the pool itself
                     66: is destroyed.
                     67: .PP
                     68: Elements are allocated inline except when 
                     69: a new chunk must be added to the pool.
                     70: Elements are always freed inline.
                     71: .SH EXAMPLES
                     72: .B #include <Pool.h>
                     73: .PP
                     74: .EX
                     75: struct Mytype {
                     76:        static Pool mypool;
                     77:        // constructors and members
                     78:        void* operator new(unsigned) { return mypool.alloc(); }
                     79:        void operator delete(void* p) { mypool.free(p); }
                     80: };
                     81: .EE
                     82: .PP
                     83: .B Pool Mytype::mypool(sizeof(Mytype));
                     84: .SH SEE ALSO
                     85: .IR malloc (3)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.