From 84adefa331c4159d432d22840663c38f155cd4c1 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Fri, 20 Nov 2009 14:54:40 +0000 Subject: The R13B03 release. --- lib/erl_interface/doc/src/erl_malloc.xml | 200 +++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 lib/erl_interface/doc/src/erl_malloc.xml (limited to 'lib/erl_interface/doc/src/erl_malloc.xml') diff --git a/lib/erl_interface/doc/src/erl_malloc.xml b/lib/erl_interface/doc/src/erl_malloc.xml new file mode 100644 index 0000000000..8c8750d62a --- /dev/null +++ b/lib/erl_interface/doc/src/erl_malloc.xml @@ -0,0 +1,200 @@ + + + + +
+ + 19962009 + Ericsson AB. All Rights Reserved. + + + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + + + erl_malloc + Torbjörn Törnkvist + Torbjörn Törnkvist + + Bjarne Däcker + Torbjörn Törnkvist + 980703 + A + erl_malloc.sgml +
+ erl_malloc + Memory Allocation Functions + +

This module provides functions for allocating and deallocating + memory.

+
+ + + ETERM *erl_alloc_eterm(etype) + Allocates an ETERM structure + + unsigned char etype; + + +

This function allocates an structure. + Specify as one of the following constants:

+ + +

ERL_INTEGER

+
+ +

ERL_U_INTEGER

+
+ +

ERL_ATOM

+
+ +

ERL_PID

+
+ +

ERL_PORT

+
+ +

ERL_REF

+
+ +

ERL_LIST

+
+ +

ERL_EMPTY_LIST

+
+ +

ERL_TUPLE

+
+ +

ERL_BINARY

+
+ +

ERL_FLOAT

+
+ +

ERL_VARIABLE

+
+ +

ERL_SMALL_BIG

+
+ +

ERL_U_SMALL_BIG

+
+
+

and are for + creating Erlang , which can contain integers of + arbitrary size. The size of an integer in Erlang is machine + dependent, but in general any integer larger than 2^28 + requires a bignum.

+
+
+ + voiderl_eterm_release(void) + Clears the ETERM freelist + +

Clears the + freelist, where blocks are placed when they are + released by and + .

+
+
+ + voiderl_eterm_statistics(allocated, freed) + Reports term allocation statistics + + long *allocated; + long *freed; + + +

and are initialized to + contain information about the fix-allocator used to allocate + ETERM components. is the number of blocks + currently allocated to ETERM objects. is the + length of the freelist, where blocks are placed when they are + released by and + .

+
+
+ + voiderl_free_array(array, size) + Frees an array of ETERM structures + + ETERM **array; + int size; + + +

This function frees an array of Erlang terms.

+

is an array of ETERM* objects. +

+

is the number of terms in the array.

+
+
+ + voiderl_free_term(t) + Frees an ETERM structure + + ETERM *t; + + +

Use this function to free an Erlang term.

+
+
+ + voiderl_free_compound(t) + Frees an array of ETERM structures + + ETERM *t; + + +

Normally it is the programmer's responsibility to free each + Erlang term that has been returned from any of the + functions. However since many of the + functions that build new Erlang terms in fact share objects + with other existing terms, it may be difficult for the + programmer to maintain pointers to all such terms in order to + free them individually. +

+

will recursively free all of the + sub-terms associated with a given Erlang term, regardless of + whether we are still holding pointers to the sub-terms. +

+

There is an example in the User Manual under "Building + Terms and Patterns" +

+
+
+ + voiderl_malloc(size) + Allocates some memory + + long size; + + +

This function calls the standard + function.

+
+
+ + voiderl_free(ptr) + Frees some memory + + void *ptr; + + +

This function calls the standard + function.

+
+
+
+
+ -- cgit v1.2.3