An open API service indexing awesome lists of open source software.

https://github.com/codemix/malloc

Simple malloc() & free() implementation for node.js, built on top of array buffers.
https://github.com/codemix/malloc

Last synced: 8 months ago
JSON representation

Simple malloc() & free() implementation for node.js, built on top of array buffers.

Awesome Lists containing this project

README

          

# malloc
A skip-list based memory allocator built on top of typed arrays (and node buffers).

[![Build Status](https://travis-ci.org/codemix/malloc.svg?branch=master)](https://travis-ci.org/codemix/malloc)

## What?

It lets you allocate a large, contiguous slab of memory up front and then `alloc()` and `free()` within that buffer.
It is mostly useful in conjunction with things like [mmap.js](https://github.com/indutny/mmap.js).

It's developed using [design by contract](https://github.com/codemix/babel-plugin-contracts), so you might find the library's own code style a bit unusual, but it doesn't affect usage.

## Installation

Install via [npm](https://npmjs.org/package/malloc).

## Usage

```js
import Allocator from "malloc";

const heap = new Buffer(1024 * 1024);
const allocator = new Allocator(heap); // heap could also be an ArrayBuffer
console.log(allocator.inspect());

const input = "Hello World";
const offset = allocator.alloc(Buffer.byteLength(input));
heap.write(input, offset);

console.log(allocator.inspect());

console.log(allocator.sizeOf(offset));

console.log('freed', allocator.free(offset), 'bytes');
```

## License

Published by [codemix](http://codemix.com/) under a permissive MIT License, see [LICENSE.md](./LICENSE.md).