|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: * ! 6: * @(#)malloc_.c 5.1 6/7/85 ! 7: */ ! 8: ! 9: /* ! 10: * allows f77 programs to dynamicly allocate space ! 11: * three routines: ! 12: * call malloc(need, addr) ! 13: * integer need, addr ! 14: * ! 15: * call free(addr) ! 16: * integer addr ! 17: * ! 18: * call falloc( nelem, elsize, clean, basevec, addr, offset ) ! 19: * integer nelem, elsize, clean, addr, offset ! 20: * dimension basevec(1) ! 21: * ! 22: * malloc() & falloc() alloc space and put address in 'addr', 0 if can't ! 23: * do it. free() frees a block. malloc() gets a block of at least ! 24: * 'need' bytes; falloc() gets at least nelem*elsize bytes, zeros ! 25: * the block if clean=1, and returns an offset so that the block ! 26: * can be referenced as basevec(offset+1)...basevec(offset+nelem) ! 27: * in the calling program. falloc() gets an extra element so that ! 28: * all the elements will be in the block even if address arithmetic ! 29: * involves truncation. ! 30: */ ! 31: ! 32: char *calloc(), *malloc(); ! 33: ! 34: malloc_( need, addr ) ! 35: int *need; char **addr; ! 36: { ! 37: *addr = malloc( *need ); ! 38: } ! 39: ! 40: free_( addr ) ! 41: char **addr; ! 42: { ! 43: free( *addr ); ! 44: } ! 45: ! 46: falloc_( nelem, elsize, clean, basevec, addr, offset ) ! 47: int *nelem, *elsize, *clean, *offset; ! 48: char **addr, *basevec; ! 49: { ! 50: if( *clean == 1 ) ! 51: *addr = calloc( *nelem + 1, *elsize ); ! 52: else ! 53: *addr = malloc( (*nelem + 1) * *elsize ); ! 54: ! 55: if( *addr != 0 ) ! 56: *offset = ((*addr - basevec) / *elsize) + 1; ! 57: else ! 58: *offset = 0; ! 59: ! 60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.