Inicialmente, o sistema possui um único bloco livre, cujo tamanho é equivalente a toda memória disponível. Quando o usuário solicita um bloco, a função bnnk_malloc() procura o primeiro bloco dispon 'ivel com tamanho igual ou maior que o tamanho solicitado. Então este bloco é fracionado, caso seja maior, e o tamanho solicitado é retirado da memória disponível.
Quando o bloco é liberado, a função bnnk_free() verifica se o s blocos imediatamente anterior ou posterior estão livres e, em caso afirmativo, ele faz a junção desses blocos, criando um espaço livre maior.