home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / c / 11697 < prev    next >
Encoding:
Text File  |  1992-07-29  |  2.4 KB  |  56 lines

  1. Newsgroups: comp.lang.c
  2. Path: sparky!uunet!decwrl!pa.dec.com!decprl!decprl!vanroy
  3. From: vanroy@prl.dec.com (Peter Van Roy)
  4. Subject: Two 'malloc' questions
  5. Message-ID: <1992Jul29.092517.25584@prl.dec.com>
  6. Keywords: malloc free
  7. Sender: news@prl.dec.com (USENET News System)
  8. Nntp-Posting-Host: prl332.prl.dec.com
  9. Organization: Digital Equipment Corporation - Paris Research Laboratory
  10. Date: Wed, 29 Jul 1992 09:25:17 GMT
  11. Lines: 43
  12.  
  13. Here are two questions that I urgently need answers to:
  14.  
  15. 1. Is there a public domain version of malloc+free that uses a fixed area
  16.    of memory, which is given it upon initialization?  It should not touch
  17.    the Unix break, but stay within the fixed area.  It should give an
  18.    error if it is not possible to allocate a block in the area.  The
  19.    call to free should do its job, i.e. an infinite sequence of mallocs and
  20.    frees of the same size should work.
  21.  
  22. 2. Is it possible to initialize things so that file operations do not
  23.    call malloc under Ultrix (on a DECstation)?  I know there is a call
  24.    f_prealloc under RISC/os (on a MIPS workstation) that does this.  It does
  25.    not exist under Ultrix as far as I know.  Calling fopen under Ultrix does
  26.    mallocs of various sizes: several 28 and 256 byte blocks, and seven (yes,
  27.    count 'em!) 8192 byte blocks.
  28.  
  29. These two questions are important for the correct operation of the Aquarius
  30. Prolog system under Ultrix.  Aquarius Prolog does its own memory management.
  31. It has been ported to several machine/OS configurations.
  32.  
  33. During execution of the backend of Aquarius Prolog under Ultrix, the file
  34. operations call malloc, which interferes with Aquarius' own memory management.
  35. This is how: Aquarius manipulates the  Unix break itself (the top of the bss,
  36. i.e. available dynamically-allocated space) to get more space from Unix when
  37. needed (e.g. when garbage collection does not recover enough memory).  Malloc
  38. allocates memory by getting more space from Unix starting at the break.  In
  39. other words, if Aquarius ever increases the break, then its memory will
  40. overlap with what malloc has allocated before.
  41.  
  42. Thanks much for any help!
  43.  
  44. Peter
  45.  
  46. ----------------------------------------------------------------
  47. Peter Van Roy
  48. Digital Equipment Corporation          Net: vanroy@prl.dec.com
  49. Paris Research Laboratory              Tel: [33] (1) 47 14 28 65
  50. 85, avenue Victor Hugo                 Fax: [33] (1) 47 14 28 99
  51. 92500 RUEIL MALMAISON CEDEX
  52. FRANCE
  53. ----------------------------------------------------------------
  54.  
  55.  
  56.