MALLOC.3
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:3k
源码类别:

操作系统开发

开发平台:

C/C++

  1. ." Copyright (c) 1980 Regents of the University of California.
  2. ." All rights reserved.  The Berkeley software License Agreement
  3. ." specifies the terms and conditions for redistribution.
  4. ."
  5. ." @(#)malloc.3 6.3 (Berkeley) 5/14/86
  6. ."
  7. .TH MALLOC 3  "May 14, 1986"
  8. .UC 4
  9. .SH NAME
  10. malloc, free, realloc, calloc, alloca - memory allocator
  11. .SH SYNOPSIS
  12. .nf
  13. .ft B
  14. #include <sys/types.h>
  15. #include <stdlib.h>
  16. #include <alloca.h>
  17. void *malloc(size_t fIsizefP)
  18. void free(void *fIptrfP)
  19. void *realloc(void *fIptrfP, size_t fIsizefP)
  20. void *calloc(size_t fInelemfP, size_t fIelsizefP)
  21. void *alloca(size_t fIsizefP)
  22. .ft R
  23. .fi
  24. .SH DESCRIPTION
  25. .B Malloc
  26. and
  27. .B free
  28. provide a general-purpose memory allocation package.
  29. .B Malloc
  30. returns a pointer to a block of at least
  31. .I size
  32. bytes beginning on a word boundary.
  33. .PP
  34. The argument to
  35. .B free
  36. is a pointer to a block previously allocated by
  37. .BR malloc ;
  38. this space is made available for further allocation,
  39. but its contents are left undisturbed.
  40. A call with a null
  41. .I ptr
  42. is legal and does nothing.
  43. .PP
  44. Needless to say, grave disorder will result if the space assigned by
  45. .B malloc
  46. is overrun or if some random number is handed to
  47. .BR free .
  48. .PP
  49. .B Malloc
  50. maintains multiple lists of free blocks according to size,
  51. allocating space from the appropriate list.
  52. It calls
  53. .B sbrk
  54. (see
  55. .BR brk (2))
  56. to get more memory from the system when there is no
  57. suitable space already free.
  58. .PP
  59. .B Realloc
  60. changes the size of the block pointed to by
  61. .I ptr
  62. to
  63. .I size
  64. bytes and returns a pointer to the (possibly moved) block.
  65. The contents will be unchanged up to the lesser of the new and old sizes.
  66. A call with a null
  67. .I ptr
  68. is legal and has the same result as
  69. .BI malloc( size )fR.
  70. .PP
  71. .B Calloc
  72. allocates space for an array of
  73. .I nelem
  74. elements of size
  75. .I elsize.
  76. The space is initialized to zeros.
  77. .PP
  78. .B Alloca
  79. allocates 
  80. .I size
  81. bytes of space in the stack frame of the caller.
  82. This temporary space is automatically freed on
  83. return.
  84. .PP
  85. Each of the allocation routines returns a pointer
  86. to space suitably aligned (after possible pointer coercion)
  87. for storage of any type of object.
  88. .SH SEE ALSO
  89. .BR brk (2).
  90. .SH DIAGNOSTICS
  91. .BR Malloc ,
  92. .BR realloc
  93. and
  94. .B calloc
  95. return a null pointer if there is no available memory or if the arena
  96. has been detectably corrupted by storing outside the bounds of a block.
  97. .SH NOTES
  98. Other implementations of
  99. .BR malloc ,
  100. .BR realloc
  101. or
  102. .BR calloc
  103. may return a null pointer if the size of the requested block is zero.  This
  104. implementation will always return a zero length block at a unique address,
  105. but you should keep in mind that a null return is possible if the program
  106. is run to another system and that this should not be mistakenly seen as
  107. an error.
  108. .SH BUGS
  109. When
  110. .B realloc
  111. returns a null pointer, the block pointed to by
  112. .I ptr
  113. may be destroyed.
  114. .PP
  115. .B Alloca
  116. is machine dependent; its use is discouraged.