|
|
1.1 ! root 1: .TH MALLOC 3 "19 January 1983" ! 2: .UC 4 ! 3: .SH NAME ! 4: malloc, free, realloc, calloc, alloca \- 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 char *alloca(size) ! 21: .B int size; ! 22: .fi ! 23: .SH DESCRIPTION ! 24: .I Malloc ! 25: and ! 26: .I free ! 27: provide a simple general-purpose memory allocation package. ! 28: .I Malloc ! 29: returns a pointer to a block of at least ! 30: .I size ! 31: bytes beginning on a word boundary. ! 32: .PP ! 33: The argument to ! 34: .I free ! 35: is a pointer to a block previously allocated by ! 36: .IR malloc ; ! 37: this space is made available for further allocation, ! 38: but its contents are left undisturbed. ! 39: .PP ! 40: Needless to say, grave disorder will result if the space assigned by ! 41: .I malloc ! 42: is overrun or if some random number is handed to ! 43: .IR free . ! 44: .PP ! 45: .I Malloc ! 46: maintains multiple lists of free blocks according to size, ! 47: allocating space from the appropriate list. ! 48: It calls ! 49: .I sbrk ! 50: (see ! 51: .IR brk (2)) ! 52: to get more memory from the system when there is no ! 53: suitable space already free. ! 54: .PP ! 55: .I Realloc ! 56: changes the size of the block pointed to by ! 57: .I ptr ! 58: to ! 59: .I size ! 60: bytes and returns a pointer to the (possibly moved) block. ! 61: The contents will be unchanged up to the lesser of the new and old sizes. ! 62: .PP ! 63: In order to be compatible with older versions, ! 64: .I realloc ! 65: also works if ! 66: .I ptr ! 67: points to a block freed since the last call of ! 68: .I malloc, realloc ! 69: or ! 70: .IR calloc ; ! 71: sequences of ! 72: .I free, malloc ! 73: and ! 74: .I realloc ! 75: were previously used to attempt storage compaction. ! 76: This procedure is no longer recommended. ! 77: .PP ! 78: .I Calloc ! 79: allocates space for an array of ! 80: .I nelem ! 81: elements of size ! 82: .I elsize. ! 83: The space is initialized to zeros. ! 84: .PP ! 85: .I Alloca ! 86: allocates ! 87: .I size ! 88: bytes of space in the stack frame of the caller. ! 89: This temporary space is automatically freed on ! 90: return. ! 91: .PP ! 92: Each of the allocation routines returns a pointer ! 93: to space suitably aligned (after possible pointer coercion) ! 94: for storage of any type of object. ! 95: .SH DIAGNOSTICS ! 96: .I Malloc, realloc ! 97: and ! 98: .I calloc ! 99: return a null pointer (0) if there is no available memory or if the arena ! 100: has been detectably corrupted by storing outside the bounds of a block. ! 101: .I Malloc ! 102: may be recompiled to check the arena very stringently on every transaction; ! 103: those sites with a source code license may check the source code to see ! 104: how this can be done. ! 105: .SH BUGS ! 106: When ! 107: .I realloc ! 108: returns 0, the block pointed to by ! 109: .I ptr ! 110: may be destroyed. ! 111: .PP ! 112: .I Alloca ! 113: is machine dependent; it's use is discouraged.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.