|
|
1.1 root 1: .TH MALLOC 3 "19 January 1983"
2: .UC 4
3: .SH NAME
4: malloc, free, realloc, calloc, alloca \- memory allocator
5: .SH SYNOPSIS
6: .nf
7: .B char *malloc(size)
8: .B unsigned size;
9: .PP
10: .B free(ptr)
11: .B char *ptr;
12: .PP
13: .B char *realloc(ptr, size)
14: .B char *ptr;
15: .B unsigned size;
16: .PP
17: .B char *calloc(nelem, elsize)
18: .B unsigned nelem, elsize;
19: .PP
20: .B char *alloca(size)
21: .B int size;
22: .fi
23: .SH DESCRIPTION
24: .I Malloc
25: and
26: .I free
27: provide a simple general-purpose memory allocation package.
28: .I Malloc
29: returns a pointer to a block of at least
30: .I size
31: bytes beginning on a word boundary.
32: .PP
33: The argument to
34: .I free
35: is a pointer to a block previously allocated by
36: .IR malloc ;
37: this space is made available for further allocation,
38: but its contents are left undisturbed.
39: .PP
40: Needless to say, grave disorder will result if the space assigned by
41: .I malloc
42: is overrun or if some random number is handed to
43: .IR free .
44: .PP
45: .I Malloc
46: maintains multiple lists of free blocks according to size,
47: allocating space from the appropriate list.
48: It calls
49: .I sbrk
50: (see
51: .IR brk (2))
52: to get more memory from the system when there is no
53: suitable space already free.
54: .PP
55: .I Realloc
56: changes the size of the block pointed to by
57: .I ptr
58: to
59: .I size
60: bytes and returns a pointer to the (possibly moved) block.
61: The contents will be unchanged up to the lesser of the new and old sizes.
62: .PP
63: In order to be compatible with older versions,
64: .I realloc
65: also works if
66: .I ptr
67: points to a block freed since the last call of
68: .I malloc, realloc
69: or
70: .IR calloc ;
71: sequences of
72: .I free, malloc
73: and
74: .I realloc
75: were previously used to attempt storage compaction.
76: This procedure is no longer recommended.
77: .PP
78: .I Calloc
79: allocates space for an array of
80: .I nelem
81: elements of size
82: .I elsize.
83: The space is initialized to zeros.
84: .PP
85: .I Alloca
86: allocates
87: .I size
88: bytes of space in the stack frame of the caller.
89: This temporary space is automatically freed on
90: return.
91: .PP
92: Each of the allocation routines returns a pointer
93: to space suitably aligned (after possible pointer coercion)
94: for storage of any type of object.
95: .SH DIAGNOSTICS
96: .I Malloc, realloc
97: and
98: .I calloc
99: return a null pointer (0) if there is no available memory or if the arena
100: has been detectably corrupted by storing outside the bounds of a block.
101: .I Malloc
102: may be recompiled to check the arena very stringently on every transaction;
103: those sites with a source code license may check the source code to see
104: how this can be done.
105: .SH BUGS
106: When
107: .I realloc
108: returns 0, the block pointed to by
109: .I ptr
110: may be destroyed.
111: .PP
112: .I Alloca
113: is machine dependent; it's use is discouraged.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.