| 1 | '\" | 
|---|
| 2 | '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. | 
|---|
| 3 | '\" | 
|---|
| 4 | '\" See the file "license.terms" for information on usage and redistribution | 
|---|
| 5 | '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. | 
|---|
| 6 | '\"  | 
|---|
| 7 | '\" RCS: @(#) $Id: Alloc.3,v 1.10 2006/06/05 10:04:33 dkf Exp $ | 
|---|
| 8 | '\"  | 
|---|
| 9 | .so man.macros | 
|---|
| 10 | .TH Tcl_Alloc 3 7.5 Tcl "Tcl Library Procedures" | 
|---|
| 11 | .BS | 
|---|
| 12 | .SH NAME | 
|---|
| 13 | Tcl_Alloc, Tcl_Free, Tcl_Realloc, Tcl_AttemptAlloc, Tcl_AttemptRealloc, ckalloc, ckfree, ckrealloc, attemptckalloc, attemptckrealloc \- allocate or free heap memory | 
|---|
| 14 | .SH SYNOPSIS | 
|---|
| 15 | .nf | 
|---|
| 16 | \fB#include <tcl.h>\fR | 
|---|
| 17 | .sp | 
|---|
| 18 | char * | 
|---|
| 19 | \fBTcl_Alloc\fR(\fIsize\fR) | 
|---|
| 20 | .sp | 
|---|
| 21 | void | 
|---|
| 22 | \fBTcl_Free\fR(\fIptr\fR) | 
|---|
| 23 | .sp | 
|---|
| 24 | char * | 
|---|
| 25 | \fBTcl_Realloc\fR(\fIptr, size\fR) | 
|---|
| 26 | .sp | 
|---|
| 27 | char * | 
|---|
| 28 | \fBTcl_AttemptAlloc\fR(\fIsize\fR) | 
|---|
| 29 | .sp | 
|---|
| 30 | char * | 
|---|
| 31 | \fBTcl_AttemptRealloc\fR(\fIptr, size\fR) | 
|---|
| 32 | .sp | 
|---|
| 33 | char * | 
|---|
| 34 | \fBckalloc\fR(\fIsize\fR) | 
|---|
| 35 | .sp | 
|---|
| 36 | void | 
|---|
| 37 | \fBckfree\fR(\fIptr\fR) | 
|---|
| 38 | .sp | 
|---|
| 39 | char * | 
|---|
| 40 | \fBckrealloc\fR(\fIptr, size\fR) | 
|---|
| 41 | .sp | 
|---|
| 42 | char * | 
|---|
| 43 | \fBattemptckalloc\fR(\fIsize\fR) | 
|---|
| 44 | .sp | 
|---|
| 45 | char * | 
|---|
| 46 | \fBattemptckrealloc\fR(\fIptr, size\fR) | 
|---|
| 47 | .SH ARGUMENTS | 
|---|
| 48 | .AS char *size | 
|---|
| 49 | .AP int size in | 
|---|
| 50 | Size in bytes of the memory block to allocate. | 
|---|
| 51 | .AP char *ptr in | 
|---|
| 52 | Pointer to memory block to free or realloc. | 
|---|
| 53 | .BE | 
|---|
| 54 |  | 
|---|
| 55 | .SH DESCRIPTION | 
|---|
| 56 | .PP | 
|---|
| 57 | These procedures provide a platform and compiler independent interface | 
|---|
| 58 | for memory allocation.  Programs that need to transfer ownership of | 
|---|
| 59 | memory blocks between Tcl and other modules should use these routines | 
|---|
| 60 | rather than the native \fBmalloc()\fR and \fBfree()\fR routines | 
|---|
| 61 | provided by the C run-time library. | 
|---|
| 62 | .PP | 
|---|
| 63 | \fBTcl_Alloc\fR returns a pointer to a block of at least \fIsize\fR | 
|---|
| 64 | bytes suitably aligned for any use. | 
|---|
| 65 | .PP | 
|---|
| 66 | \fBTcl_Free\fR makes the space referred to by \fIptr\fR available for | 
|---|
| 67 | further allocation. | 
|---|
| 68 | .PP | 
|---|
| 69 | \fBTcl_Realloc\fR changes the size of the block pointed to by | 
|---|
| 70 | \fIptr\fR to \fIsize\fR bytes and returns a pointer to the new block. | 
|---|
| 71 | The contents will be unchanged up to the lesser of the new and old | 
|---|
| 72 | sizes.  The returned location may be different from \fIptr\fR.  If | 
|---|
| 73 | \fIptr\fR is NULL, this is equivalent to calling \fBTcl_Alloc\fR with | 
|---|
| 74 | just the \fIsize\fR argument. | 
|---|
| 75 | .PP | 
|---|
| 76 | \fBTcl_AttemptAlloc\fR and \fBTcl_AttemptRealloc\fR are identical in | 
|---|
| 77 | function to \fBTcl_Alloc\fR and \fBTcl_Realloc\fR, except that | 
|---|
| 78 | \fBTcl_AttemptAlloc\fR and \fBTcl_AttemptRealloc\fR will not cause the Tcl | 
|---|
| 79 | interpreter to \fBpanic\fR if the memory allocation fails.  If the | 
|---|
| 80 | allocation fails, these functions will return NULL.  Note that on some | 
|---|
| 81 | platforms, but not all, attempting to allocate a zero-sized block of | 
|---|
| 82 | memory will also cause these functions to return NULL. | 
|---|
| 83 | .PP | 
|---|
| 84 | The procedures \fBckalloc\fR, \fBckfree\fR, \fBckrealloc\fR, | 
|---|
| 85 | \fBattemptckalloc\fR, and \fBattemptckrealloc\fR are implemented | 
|---|
| 86 | as macros.  Normally, they are synonyms for the corresponding | 
|---|
| 87 | procedures documented on this page.  When Tcl and all modules | 
|---|
| 88 | calling Tcl are compiled with \fBTCL_MEM_DEBUG\fR defined, however, | 
|---|
| 89 | these macros are redefined to be special debugging versions | 
|---|
| 90 | of these procedures.  To support Tcl's memory debugging within a | 
|---|
| 91 | module, use the macros rather than direct calls to \fBTcl_Alloc\fR, etc. | 
|---|
| 92 |  | 
|---|
| 93 | .SH KEYWORDS | 
|---|
| 94 | alloc, allocation, free, malloc, memory, realloc, TCL_MEM_DEBUG | 
|---|