Annotation of coherent/a/usr/man/ALL/malloc, revision 1.1

1.1     ! root        1: 
        !             2: 
        !             3: malloc()                 General Function                malloc()
        !             4: 
        !             5: 
        !             6: 
        !             7: 
        !             8: Allocate dynamic memory
        !             9: 
        !            10: cchhaarr *mmaalllloocc(_s_i_z_e) uunnssiiggnneedd _s_i_z_e;
        !            11: 
        !            12: malloc helps to manage  a program's free-space arenas.  It uses a
        !            13: circular,  first-fit algorithm  to select an  unused block  of at
        !            14: least  size  bytes, marks  the  portion it  uses,  and returns  a
        !            15: pointer to it.  The function free returns allocated memory to the
        !            16: free memory pool.
        !            17: 
        !            18: Each area  allocated by malloc is rounded up  to the nearest even
        !            19: number and  preceded by  an unsigned  int that contains  the true
        !            20: length.  Thus, if  you ask for three bytes you  get four, and the
        !            21: unsigned that precedes the newly allocated area is set to four.
        !            22: 
        !            23: When an area is freed, its low order bit is turned on; consolida-
        !            24: tion occurs  when malloc passes  over an area as  it searches for
        !            25: space.  The end  of each arena contains a block  with a length of
        !            26: zero, followed by a pointer to the next arena.  Arenas point in a
        !            27: circle.
        !            28: 
        !            29: The  most  common  problem  with  malloc  occurs when  a  program
        !            30: modifies  more space  than it  allocates  with malloc.   This can
        !            31: cause later  mallocs to crash with a  message that indicates that
        !            32: the arena has been corrupted.
        !            33: 
        !            34: ***** Example *****
        !            35: 
        !            36: This example  reads from the  standard input up  to NITEMS items,
        !            37: each of  which is up to  MAXLEN long, sorts them,  and writes the
        !            38: sorted  list  onto  the  standard  output.  It  demonstrates  the
        !            39: functions qsort, malloc, free, exit, and strcmp.
        !            40: 
        !            41: 
        !            42: #include <stdio.h>
        !            43: #define NITEMS 512
        !            44: #define MAXLEN 256
        !            45: char *data[NITEMS];
        !            46: char string[MAXLEN];
        !            47: 
        !            48: 
        !            49: 
        !            50: main()
        !            51: {
        !            52:         register char **cpp;
        !            53:         register int count;
        !            54:         extern int compare();
        !            55:         extern char *malloc();
        !            56:         extern char *gets();
        !            57: 
        !            58: 
        !            59: 
        !            60: 
        !            61: 
        !            62: 
        !            63: 
        !            64: COHERENT Lexicon                                           Page 1
        !            65: 
        !            66: 
        !            67: 
        !            68: 
        !            69: malloc()                 General Function                malloc()
        !            70: 
        !            71: 
        !            72: 
        !            73:         for (cpp = &data[0]; cpp < &data[NITEMS]; cpp++) {
        !            74:                 if (gets(string) == NULL)
        !            75:                         break;
        !            76:                 if ((*cpp = malloc(strlen(string) + 1)) == NULL)
        !            77:                         exit(1);
        !            78:                 strcpy(*cpp, string);
        !            79:         }
        !            80: 
        !            81: 
        !            82: 
        !            83:         count = cpp - &data[0];
        !            84:         qsort(data, count, sizeof(char *), compare);
        !            85: 
        !            86: 
        !            87: 
        !            88:         for (cpp = &data[0]; cpp < &data[count]; cpp++) {
        !            89:                 printf("%s\n", *cpp);
        !            90:                 free(*cpp);
        !            91:         }
        !            92:         exit(0);
        !            93: }
        !            94: 
        !            95: 
        !            96: 
        !            97: compare(p1, p2)
        !            98: register char **p1, **p2;
        !            99: {
        !           100:         extern int strcmp();
        !           101:         return(strcmp(*p1, *p2));
        !           102: }
        !           103: 
        !           104: 
        !           105: ***** See Also *****
        !           106: 
        !           107: arena,  calloc(), free(),  general functions,  malloc.h, memok(),
        !           108: realloc(), setbuf()
        !           109: 
        !           110: ***** Diagnostics *****
        !           111: 
        !           112: malloc returns NULL if insufficient memory is available.
        !           113: 
        !           114: ***** Notes *****
        !           115: 
        !           116: The commonest error  associated with mmaalllloocc is failing to declare
        !           117: it  properly.  You  should always declare  mmaalllloocc as  returning a
        !           118: pointer to char.
        !           119: 
        !           120: 
        !           121: 
        !           122: 
        !           123: 
        !           124: 
        !           125: 
        !           126: 
        !           127: 
        !           128: 
        !           129: 
        !           130: COHERENT Lexicon                                           Page 2
        !           131: 
        !           132: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.