Patent ID: 8069330

Claim:
A memory management system for a process formulated in the C/C++ language in a processing unit, this system comprising: an allocator, allocates memory spaces for the objects which the process uses, and of freeing memory spaces which the process does not use to the operating system of the processing unit; an asynchronous mechanism, which defines a buffer zone consisting of a set of memory blocks which are available for the process, all the memory blocks of said mechanism being of the same size, equal to m*32 kilobytes, where m is between 1 and 4; each memory block of m*32 kilobytes, originated from said mechanism and used by the process, is managed by the allocator in the form of memory regions, according to the “chunk” memory management technique; for large objects, the size of which is within a predetermined size range, which consists of a range such that 256 bytes<object size≦m*32 kilobytes, each memory block of m*32 kilobytes is considered as a multi-size memory region (chunk), which includes several of said large objects of different sizes, said multi-size memory region (chunk) containing a header indicating that this is a memory region (chunk) including large objects, a bit field, and a data area comprising small memory blocks in the course of usage and free small memory blocks, the small memory blocks of the multi-size memory region (chunk) being all of the same size and in that for small objects of which the size is less than or equal to 256 bytes, each memory block of m*32 kilobytes which must be used is subdivided into multiple fixed memory segments termed “page chunks”; each fixed memory segment (page chunk) contains a header which includes the size of the objects and an indication of the character, empty or not, of the fixed memory segment (page chunk), and multiple small memory blocks of the same size, each small memory block being free or filled with an object; the allocator comprising means of implementing the de Bruijn algorithm, in combination with the bit field technique, to determine the adjacent free blocks, when the process frees a small memory block.