home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / c / 11676 < prev    next >
Encoding:
Internet Message Format  |  1992-07-28  |  1.5 KB

  1. Path: sparky!uunet!wupost!sdd.hp.com!swrinde!gatech!hubcap!mjs
  2. From: mjs@hubcap.clemson.edu (M. J. Saltzman)
  3. Newsgroups: comp.lang.c
  4. Subject: Pointers outside of array boundary
  5. Summary: Elaboration on FAQ answer wanted
  6. Message-ID: <1992Jul28.180945.22332@hubcap.clemson.edu>
  7. Date: 28 Jul 92 18:09:45 GMT
  8. Organization: Clemson University, Clemson SC
  9. Lines: 31
  10.  
  11. I am having an e-mail conversation with someone regarding the
  12. _Numerical_Recipes_in_C_ practice of creating arrays with offset
  13. indices.  The sample code in question is 
  14.  
  15.     float x = malloc(10*sizeof(float));
  16.     --x;
  17.  
  18. which is supposed to give an array whose elements are addressed
  19. as x[1]..x[10].  The FAQ points out that this is not strictly
  20. conforming, since the decremented value of x no longer points
  21. to a legitimate element of the allocated array.  My interlocutor
  22. asks what could possibly go wrong if we only ever dereference 
  23. x[1]..x[10], and I can only respond with hypothetical arguments
  24. about the possibility of generating an invalid address.
  25.  
  26. My question is: Can anyone name an existing machine on which this code
  27. could fail, or give a really convincing hypothetical argument why it
  28. is a bad idea?  My interlocutor claims the criticism of this form is
  29. legalistic, and not based on practical considerations.
  30.  
  31. Also, could someone quote the relevant part of the standard?  The
  32. relevant portions of K&R2 cited in the FAQ don't seem to quite address
  33. the issue head-on.
  34.  
  35. Thanks in advance.
  36.  
  37.  
  38. -- 
  39.         Matthew Saltzman
  40.         Clemson University Math Sciences
  41.         mjs@clemson.edu
  42.