Provided by: tcl8.4-doc_8.4.19-4ubuntu3_all bug


       Tcl_Alloc,  Tcl_Free,  Tcl_Realloc, Tcl_AttemptAlloc, Tcl_AttemptRealloc, ckalloc, ckfree,
       ckrealloc, attemptckalloc, attemptckrealloc - allocate or free heap memory


       #include <tcl.h>

       char *


       char *
       Tcl_Realloc(ptr, size)

       char *

       char *
       Tcl_AttemptRealloc(ptr, size)

       char *


       char *
       ckrealloc(ptr, size)

       char *

       char *
       attemptckrealloc(ptr, size)


       int    size    (in)      Size in bytes of the memory block to allocate.

       char   *ptr    (in)      Pointer to memory block to free or realloc.


       These procedures  provide  a  platform  and  compiler  independent  interface  for  memory
       allocation.   Programs  that  need  to transfer ownership of memory blocks between Tcl and
       other modules should use these  routines  rather  than  the  native  malloc()  and  free()
       routines provided by the C run-time library.

       Tcl_Alloc  returns  a  pointer  to a block of at least size bytes suitably aligned for any

       Tcl_Free makes the space referred to by ptr available for further allocation.

       Tcl_Realloc changes the size of the block pointed to by ptr to size bytes  and  returns  a
       pointer  to the new block.  The contents will be unchanged up to the lesser of the new and
       old sizes.  The returned location may be different from ptr.

       Tcl_AttemptAlloc and  Tcl_AttemptRealloc  are  identical  in  function  to  Tcl_Alloc  and
       Tcl_Realloc,  except  that  Tcl_AttemptAlloc and Tcl_AttemptRealloc will not cause the Tcl
       interpreter to panic if the memory allocation  fails.   If  the  allocation  fails,  these
       functions  will  return NULL.  Note that on some platforms, attempting to allocate a block
       of memory will also cause these functions to return NULL.

       The procedures  ckalloc,  ckfree,  ckrealloc,  attemptckalloc,  and  attemptckrealloc  are
       implemented  as  macros.   Normally,  they  are  synonyms for the corresponding procedures
       documented on this page.   When  Tcl  and  all  modules  calling  Tcl  are  compiled  with
       TCL_MEM_DEBUG  defined,  however,  these  macros  are  redefined  to  be special debugging
       versions of of these procedures.  To support Tcl's memory debugging within a  module,  use
       the macros rather than direct calls to Tcl_Alloc, etc.


       alloc, allocation, free, malloc, memory, realloc, TCL_MEM_DEBUG