A C++ Standard Allocator for the Standard Template Library

Main Allocator Download/Site Map

NOTE: The shared memory allocator project is on hold pending the resoluton of the following GCC bug submission: Placement in Shared Memory

Please add a followup request to this bug report to support this project.

That shabby corner of G-d's allotment where G-d lets the nettles
grow, and where all unbaptized infants, notorious drunkards,
suicides and others of the conjecturally damned are laid.

Thomas Hardy, Tess of the D'Urbervilles, Chapter 14

Allocator Publications

  • Marc Ronell, A C++ Pooled, Shared Memory Allocator For The Standard Template Library, Proceedings of the Fifth Real Time Linux Workshop, Valencia, Spain, 2003, pp. 247-256.

  • Introduction


    As part of research on a computer architectures for accelerated road traffic simulation machines, an open source road traffic simulator, Trafix, was developed in C++. The software simulator was developed as a two process system. One Trafix process is devoted to running the microscopic discrete event simulation. The second Trafix process serves as the user interface to the simulator process. A natural solution allows the user interface process to directly control simulator objects. Standard Template Library (STL) container classes are designed to work with allocators. Developing a shared memory allocator allowed the interface process to attach to the simulator objects directly. The user interface process directly manipulates and controls the simulator. The first version of the pooled, shared memory allocator depended on initial global data structures being shared between a process and its forked descendant. The first process sharing the STL container classes forked the second process allowing both access to the shared global structures and memory segment mappings. Both the current and original systems are available as open source from the Sourceforge website

    With the incorporation of POSIX into both the Linux kernel and the GLIBC library, and with recent upgrades of the GCC compiler, the project is now moving to better fulfill user needs and requests. Current versions of the allocator allow unrelated processes to relatively easily connect and work with each other through shared STL container objects. Constant template parameters allow shared memory identifiers to be passed through the allocator type definitions. These parameters uniquely define the type of the allocator and pass key values used to identify particular shared memory segments and address mappings.

    Documentation on this project has been submited for publication to various conferences and journals. That work will added to the site documentation pages in the future.

    This project, like most sourceforge endeavors is a work in progress. Your assistance and feed back through the web site forums is greatly appreciated.

    Marc Bumble wrote the original pooled, shared memory allocator as part of the open source road traffic simulator project, Trafix. Fred P. designed the initial Alloator web page.