Para que o endereço tenha um crescimento positivo para o usuário, ou seja, para que uma posição no bloco possa ser expressa como , o sentido da alocação deve ser do maior endereço disponível para o menor. Sendo assim, o endereço de um nov o bloco pode ser encontrado pela função bnnk_malloc() por:
Cada bloco alocado é representado por uma estrutura contendo sua posição e tamanho, armazenada em um vetor de tamanho fixo (1024), o que limita a quantidade de blocos que podem ser alocados simultaneamente. Como nesta versão não há gerência de blocos liberados e de fragmentos de memória, um bloco alocado não pode ser retirado da meória, mas ele é removido deste vetor.
Na figura Sentido de Crescimento da Mem=F3ria e da Aloca=E7=E3o, tem-se representado o sentido de crescimento real da memória, e o sentido que a alocação percorre. Essa informação é muito relevante quando se está trabalhando com alocação contínua, utilizada na versão simples, pois o próximo endereço a ser alocado depende do último.
Na versão intermediária, esse fato não é de importância, pois, primeiramente, é criado um bloco, na lista de blocos disponíveis, contendo toda a memória e, posteriormente, este bloco pode ser fracionado do menor para o maior endereço.
Analisando o caso da versão simples, quando um usuário requisita um bloco de tamanho x, o sistema pega o endereço do último bloco alocado e subtrai esse tamanho, encontrando diretamente o valor do novo endereço:
Se o sistema fizesse uma alocação iniciando no menor endereço, teria-se que somar ao endereço do último bloco alocado o tamanho deste bloco, uma informação que exige um passo demorado, para encontrar o tamanho do bloco (utilizando a função bnnk_getsize()):