1 .\" Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
3 .\" @APPLE_LICENSE_HEADER_START@
5 .\" The contents of this file constitute Original Code as defined in and
6 .\" are subject to the Apple Public Source License Version 1.1 (the
7 .\" "License"). You may not use this file except in compliance with the
8 .\" License. Please obtain a copy of the License at
9 .\" http://www.apple.com/publicsource and read it before using this file.
11 .\" This Original Code and all software distributed under the License are
12 .\" distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
13 .\" EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
14 .\" INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
15 .\" FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
16 .\" License for the specific language governing rights and limitations
17 .\" under the License.
19 .\" @APPLE_LICENSE_HEADER_END@
25 .Nm malloc , calloc , valloc , realloc , reallocf , free , malloc_size , malloc_good_size
30 .Fn malloc "size_t size"
32 .Fn calloc "size_t count" "size_t size"
34 .Fn valloc "size_t size"
36 .Fn realloc "void *ptr" "size_t size"
38 .Fn reallocf "void *ptr" "size_t size"
42 .Fn malloc_size "void *ptr"
44 .Fn malloc_good_size "size_t size"
53 functions allocate memory.
54 The allocated memory is aligned such that it can be used for any data type,
55 including AltiVec-related types.
58 function frees allocations that were created via the preceding allocation
64 functions provide information related to the amount of padding space at the end
71 bytes of memory and returns a pointer to the allocated memory.
75 pointer if there is an error.
79 function contiguously allocates enough space for
83 bytes of memory each and returns a pointer to the allocated memory.
84 The allocated memory is filled with bytes of value zero.
88 pointer if there is an error.
94 bytes of memory and returns a pointer to the allocated memory.
95 The allocated memory is aligned on a page boundary.
99 pointer if there is an error.
103 function tries to change the size of the allocation pointed to by
109 If there is not enough room to enlarge the memory allocation pointed to by
112 creates a new allocation, copies as much of the old data pointed to by
114 as will fit to the new allocation, frees the old allocation, and returns a
115 pointer to the allocated memory.
119 pointer if there is an error, and the allocation pointed to by
125 function is identical to the
127 function, except that it
128 will free the passed pointer when the requested memory cannot be allocated.
131 specific API designed to ease the problems with traditional coding styles
132 for realloc causing memory leaks in libraries.
136 function deallocates the memory allocation pointed to by
142 returns the size of the memory block that backs the allocation pointed to by
144 The memory block size is always at least as large as the allocation it backs,
151 up to a value that the allocator implementation can allocate without adding any
152 padding and returns that rounded up value.
159 functions return a pointer to allocated memory.
160 If there is an error, they return a
171 functions return a pointer to allocated memory.
172 If there is an error, it returns a
181 function does not return a value.
182 .Sh DEBUGGING ALLOCATION ERRORS
183 A number of facilities are provided to aid in debugging allocation errors in
185 These facilities are primarily controlled via environment variables.
186 The recognized environment variables and their meanings are documented below.
188 The following environment variables change the behavior of the
189 allocation-related functions.
190 .Bl -tag -width ".Ev MallocStackLoggingNoCompact"
191 .It Ev MallocLogFile <f>
192 Create/append messages to the given file path
194 instead of writing to the standard error.
195 .It Ev MallocGuardEdges
196 If set, add a guard page before and after each large block.
197 .It Ev MallocDoNotProtectPrelude
198 If set, do not add a guard page before large blocks,
201 environment variable is set.
202 .It Ev MallocDoNotProtectPostlude
203 If set, do not add a guard page after large blocks,
206 environment variable is set.
207 .It Ev MallocStackLogging
208 If set, record all stacks, so that tools like
211 .It Ev MallocStackLoggingNoCompact
212 If set, record all stacks in a manner that is compatible with the
215 .It Ev MallocPreScribble
216 If set, fill memory that has been allocated with 0xaa bytes.
217 This increases the likelihood that a program making assumptions about the
218 contents of freshly allocated memory will fail.
219 .It Ev MallocScribble
220 If set, fill memory that has been deallocated with 0x55 bytes.
221 This increases the likelihood that a program will fail due to accessing memory
222 that is no longer allocated.
223 .It Ev MallocCheckHeapStart <s>
224 If set, specifies the number of allocations
226 to wait before begining periodic heap checks every
229 .Ev MallocCheckHeapEach .
231 .Ev MallocCheckHeapStart
233 .Ev MallocCheckHeapEach
234 is not specified, the default check repetition is 1000.
235 .It Ev MallocCheckHeapEach <n>
236 If set, run a consistency check on the heap every
239 .Ev MallocCheckHeapEach
240 is only meaningful if
241 .Ev MallocCheckHeapStart
243 .It Ev MallocCheckHeapSleep <t>
244 Sets the number of seconds to sleep (waiting for a debugger to attach) when
245 .Ev MallocCheckHeapStart
246 is set and a heap corruption is detected.
247 The default is 100 seconds.
248 Setting this to zero means not to sleep at all.
249 Setting this to a negative number means to sleep (for the positive number of
250 seconds) only the very first time a heap corruption is detected.
251 .It Ev MallocCheckHeapAbort <b>
253 .Ev MallocCheckHeapStart
254 is set and this is set to a non-zero value, causes
256 to be called if a heap corruption is detected, instead of any sleeping.
257 .It Ev MallocBadFreeAbort <b>
258 If set to a non-zero value, causes
260 to be called if the pointer passed to
262 was previously freed, or is otherwise illegal.
264 If set, print a list of environment variables that are paid heed to by the
265 allocation-related functions, along with short descriptions.
266 The list should correspond to this documentation.
268 .Sh DIAGNOSTIC MESSAGES
271 .Xr malloc_history 1 ,
273 .Pa /Developer/Documentation/ReleaseNotes/DeveloperTools/MallocOptions.html