|
|
1.1 ! root 1: .TH MALLOC 3 ! 2: .CT 2 mem_man ! 3: .SH NAME ! 4: malloc, free, realloc, calloc, cfree \- 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 cfree(ptr) ! 21: .B char *ptr; ! 22: .fi ! 23: .SH DESCRIPTION ! 24: .I Malloc ! 25: and ! 26: .I free ! 27: provide a simple memory allocation package. ! 28: .I Malloc ! 29: returns a pointer to a new block of at least ! 30: .I size ! 31: bytes. ! 32: The block is suitably aligned for storage of any type of object. ! 33: No two active pointers from ! 34: .I malloc ! 35: will have the same value. ! 36: .PP ! 37: The argument to ! 38: .I free ! 39: is a pointer to a block previously allocated by ! 40: .IR malloc ; ! 41: this space is made available for further allocation. ! 42: .PP ! 43: .I Realloc ! 44: changes the size of the block pointed to by ! 45: .I ptr ! 46: to ! 47: .I size ! 48: bytes and returns a pointer to the (possibly moved) ! 49: block. ! 50: The contents will be unchanged up to the ! 51: lesser of the new and old sizes. ! 52: The call ! 53: .B "realloc((char*)0, size) ! 54: means the same as ! 55: .LR malloc(size) . ! 56: .PP ! 57: .I Calloc ! 58: allocates space for ! 59: an array of ! 60: .I nelem ! 61: elements of size ! 62: .I elsize. ! 63: The space is initialized to zeros. ! 64: .I Cfree ! 65: frees such a block. ! 66: .SH SEE ALSO ! 67: .IR galloc (3), ! 68: .IR brk (2), ! 69: .IR pool (3), ! 70: .IR block (3) ! 71: .SH DIAGNOSTICS ! 72: .I Malloc, realloc ! 73: and ! 74: .I calloc ! 75: return 0 if there is no available memory ! 76: or if the arena has been detectably corrupted. ! 77: .SH BUGS ! 78: When ! 79: .I realloc ! 80: returns 0, the block pointed to by ! 81: .I ptr ! 82: may have been destroyed. ! 83: .PP ! 84: User errors can corrupt the storage arena. ! 85: The most common gaffes are (1) freeing an already freed block, ! 86: (2) storing beyond the bounds of an allocated block, and (3) ! 87: freeing data that was not obtained from the allocator. ! 88: To help find such errors, a diagnosing allocator ! 89: may be loaded; use flag ! 90: .B -ldmalloc ! 91: of ! 92: .IR cc (1). ! 93: An even more stringently checking version may be created ! 94: by recompilation; see the source.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.