A system and method for memory allocation from a heap comprising memory blocks of a uniform fixed size. Each memory block has a status bit. A binary status key stores a Boolean value indicating free memory. The heap is scanned in order until a sequence of a requested quantity of free contiguous memory blocks is found or NULL is returned. Each scanned free memory block is marked un-free by assigning its status bit to the logical negative of the binary status key. If the end of the heap is reached before a sequence of sufficient quantity is found, all reachable blocks are marked as free. The binary status key is flipped such that all memory blocks which were marked free are now un-free, and vice versa. Any memory block whose corresponding structure has become unreferenced is reclaimed for future use. The scan then continues from the beginning of the heap. In another embodiment, a memory allocation for a partitioned data structure from a heap of fixed-size memory blocks may be used. The quantity of memory blocks required to store a data structure is determined. The required quantity of the memory blocks, which may be noncontiguous, is allocated from the heap. The allocated memory blocks are linked in a list such that the components of the data structure are partitioned in the proper order across the allocated quantity of memory blocks.

Um sistema e um método para o alocamento de memória de um heap que compreende blocos da memória de um tamanho fixo uniforme. Cada bloco da memória tem um bocado do status. Uma chave de status binária armazena um valor booleano que indica a memória livre. O heap está feito a varredura em ordem até que uma seqüência de uma quantidade pedida de blocos contíguos livres da memória esteja encontrada ou NULO estiver retornado. Cada bloco livre feito a varredura da memória é un-livre marcado atribuindo seu status mordido ao negativo lógico da chave de status binária. Se a extremidade do heap for alcançada antes que uma seqüência da quantidade suficiente esteja encontrada, todos os blocos reachable estão marcados como livre. A chave de status binária é lançada tais que todos os blocos da memória que foram marcados livre são agora un-livres, e versa vice. Todo o bloco da memória cuja a estrutura correspondente se tornar unreferenced é recuperado para o uso futuro. A varredura continua então do começo do heap. Em uma outra incorporação, um alocamento de memória para uma estrutura de dados dividida de um heap de blocos fixed-size da memória pode ser usado. A quantidade dos blocos da memória requeridos para armazenar uma estrutura de dados é determinada. A quantidade requerida dos blocos da memória, que podem ser noncontiguous, é alocada do heap. Os blocos alocados da memória são ligados em uma lista tais que os componentes da estrutura de dados estão divididos na ordem apropriada através da quantidade alocada de blocos da memória.

 
Web www.patentalert.com

< Cool ice automatic footer text on HTML pages

< Method and apparatus for analyzing software in a language-independent manner

> Updating animated images represented by scene graphs

> Domain isolation through virtual network machines

~ 00078