memory

package
v12.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2023 License: Apache-2.0, BSD-2-Clause, BSD-3-Clause, + 7 more Imports: 8 Imported by: 18

Documentation

Overview

Package memory provides support for allocating and manipulating memory at a low level.

The build tag 'mallocator' will switch the default allocator to one backed by libc malloc. This also requires CGO.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Set

func Set(buf []byte, c byte)

Set assigns the value c to every element of the slice buf.

Types

type Allocator

type Allocator interface {
	Allocate(size int) []byte
	Reallocate(size int, b []byte) []byte
	Free(b []byte)
}
var DefaultAllocator Allocator = NewGoAllocator()

DefaultAllocator is a default implementation of Allocator and can be used anywhere an Allocator is required.

DefaultAllocator is safe to use from multiple goroutines.

type Buffer

type Buffer struct {
	// contains filtered or unexported fields
}

Buffer is a wrapper type for a buffer of bytes.

func NewBufferBytes

func NewBufferBytes(data []byte) *Buffer

NewBufferBytes creates a fixed-size buffer from the specified data.

func NewResizableBuffer

func NewResizableBuffer(mem Allocator) *Buffer

NewResizableBuffer creates a mutable, resizable buffer with an Allocator for managing memory.

func SliceBuffer

func SliceBuffer(buf *Buffer, offset, length int) *Buffer

func (*Buffer) Buf

func (b *Buffer) Buf() []byte

Buf returns the slice of memory allocated by the Buffer, which is adjusted by calling Reserve.

func (*Buffer) Bytes

func (b *Buffer) Bytes() []byte

Bytes returns a slice of size Len, which is adjusted by calling Resize.

func (*Buffer) Cap

func (b *Buffer) Cap() int

Cap returns the capacity of the buffer.

func (*Buffer) Len

func (b *Buffer) Len() int

Len returns the length of the buffer.

func (*Buffer) Mutable

func (b *Buffer) Mutable() bool

Mutable returns a bool indicating whether the buffer is mutable or not.

func (*Buffer) Parent

func (b *Buffer) Parent() *Buffer

Parent returns either nil or a pointer to the parent buffer if this buffer was sliced from another.

func (*Buffer) Release

func (b *Buffer) Release()

Release decreases the reference count by 1. When the reference count goes to zero, the memory is freed.

func (*Buffer) Reserve

func (b *Buffer) Reserve(capacity int)

Reserve reserves the provided amount of capacity for the buffer.

func (*Buffer) Reset

func (b *Buffer) Reset(buf []byte)

Reset resets the buffer for reuse.

func (*Buffer) Resize

func (b *Buffer) Resize(newSize int)

Resize resizes the buffer to the target size.

func (*Buffer) ResizeNoShrink

func (b *Buffer) ResizeNoShrink(newSize int)

ResizeNoShrink resizes the buffer to the target size, but will not shrink it.

func (*Buffer) Retain

func (b *Buffer) Retain()

Retain increases the reference count by 1.

type CheckedAllocator

type CheckedAllocator struct {
	// contains filtered or unexported fields
}

func NewCheckedAllocator

func NewCheckedAllocator(mem Allocator) *CheckedAllocator

func (*CheckedAllocator) Allocate

func (a *CheckedAllocator) Allocate(size int) []byte

func (*CheckedAllocator) AssertSize

func (a *CheckedAllocator) AssertSize(t TestingT, sz int)

func (*CheckedAllocator) CurrentAlloc

func (a *CheckedAllocator) CurrentAlloc() int

func (*CheckedAllocator) Free

func (a *CheckedAllocator) Free(b []byte)

func (*CheckedAllocator) Reallocate

func (a *CheckedAllocator) Reallocate(size int, b []byte) []byte

type CheckedAllocatorScope

type CheckedAllocatorScope struct {
	// contains filtered or unexported fields
}

func NewCheckedAllocatorScope

func NewCheckedAllocatorScope(alloc *CheckedAllocator) *CheckedAllocatorScope

func (*CheckedAllocatorScope) CheckSize

func (c *CheckedAllocatorScope) CheckSize(t TestingT)

type GoAllocator

type GoAllocator struct{}

func NewGoAllocator

func NewGoAllocator() *GoAllocator

func (*GoAllocator) Allocate

func (a *GoAllocator) Allocate(size int) []byte

func (*GoAllocator) Free

func (a *GoAllocator) Free(b []byte)

func (*GoAllocator) Reallocate

func (a *GoAllocator) Reallocate(size int, b []byte) []byte

type TestingT

type TestingT interface {
	Errorf(format string, args ...interface{})
	Helper()
}

Directories

Path Synopsis
Package mallocator defines an allocator implementation for memory.Allocator which defers to libc malloc.
Package mallocator defines an allocator implementation for memory.Allocator which defers to libc malloc.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL