# Smalloc
~~~
穩(wěn)定度: 1 - 實(shí)驗(yàn)性
~~~
### smalloc.alloc(length[, receiver][, type])
- `length` {Number} `<= smalloc.kMaxLength`
- `receiver` {Object} 可選,缺省為 `new Object`
- `type` {Enum} 可選,缺省為 `Uint8`
返回 `receiver` 及所分配的外部數(shù)組數(shù)據(jù)。如果未傳入 `receiver` 則會創(chuàng)建并返回一個新的 Object。
Buffer 后端為一個只處理外部原始內(nèi)存的分配的簡易分配器所支撐。Smalloc 暴露了該功能。
這可用于創(chuàng)建你自己的類似 Buffer 的類。由于不會設(shè)置其它屬性,因此使用者需要自行跟蹤其它所需信息(比如所分配的長度 `length`)。
~~~
SimpleData.prototype = { /* ... */ };
~~~
它只檢查 `receiver` 是否為一個非 Array 的 Object。因此,可以分配外部數(shù)組數(shù)據(jù)的不止純 Object。
~~~
// { [Function allocMe] '0': 0, '1': 0, '2': 0 }
~~~
V8 不支持向一個 Array 分配外部數(shù)組數(shù)據(jù),如果這么做將會拋出異常。
您可以指定您想要的外部數(shù)組數(shù)據(jù)的類型。所有可取的值都已在 `smalloc.Types` 中列出。使用示例:
~~~
// { '0': 0, '1': 0.1, '2': 0.2 }
~~~
### smalloc.copyOnto(source, sourceStart, dest, destStart, copyLength);
- `source` 分配了外部數(shù)組的來源對象
- `sourceStart` 從這個位置開始拷貝
- `dest` 分配了外部數(shù)組的目標(biāo)對象
- `destStart` 拷貝到這個位置
- `copyLength` 拷貝的長度
從一個外部數(shù)組向另一個拷貝內(nèi)存。所有參數(shù)都是必填,否則將會拋出異常。
~~~
// { '0': 4, '1': 6, '2': 2, '3': 3 }
~~~
`copyOnto` 會在內(nèi)部自動檢測分配的長度,因此無需對此給出額外的參數(shù)。
### smalloc.dispose(obj)
- `obj` 對象
釋放已使用 `smalloc.alloc` 分配到一個對象的內(nèi)存。
~~~
// {}
~~~
這對于減輕垃圾回收器的負(fù)擔(dān)有所幫助,但開發(fā)者務(wù)必小心。難以跟蹤的應(yīng)用程序可能會發(fā)生奇怪的錯誤。
~~~
// 將導(dǎo)致:
// Error: source has no external array data
~~~
`dispose()` 不支持 Buffer,傳入將會拋出異常。
### smalloc.kMaxLength
最大的分配大小。該值同時也適用于 Buffer 的創(chuàng)建。
### smalloc.Types
外部數(shù)組類型的可取值,包含:
- `Int8`
- `Uint8`
- `Int16`
- `Uint16`
- `Int32`
- `Uint32`
- `Float`
- `Double`
- `Uint8Clamped`
- 關(guān)于本文檔
- 概述
- 斷言 (assert)
- Buffer
- Addons插件
- 子進(jìn)程
- 集群
- 控制臺
- 加密(Crypto)
- 調(diào)試器
- DNS
- 域
- 事件 (Events)
- File System
- 全局對象
- HTTP
- HTTPS
- Modules
- net
- 操作系統(tǒng)
- 路徑 (Path)
- process
- punycode
- Query String
- Readline
- REPL
- Smalloc
- 流
- 字符串解碼器
- 定時器
- TLS (SSL)
- TTY
- UDP / 數(shù)據(jù)報(bào)套接字
- URL
- utils
- 執(zhí)行 JavaScript
- Zlib
- 進(jìn)度
- 感謝
