Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | James Kuyper <jameskuyper@verizon.net> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Remving an element from Queue |
| Date | 2012-05-16 07:18 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <jp02eb$s7m$1@dont-email.me> (permalink) |
| References | (7 earlier) <lr13r7lq6ilf70ldvrp5c6om9suc9345i7@4ax.com> <m7va89-ctp.ln1@jones.homeip.net> <0sm5r7t5pafpft5me4f5hiadmjghhhdfdr@4ax.com> <jov5ec$rul$1@dont-email.me> <lu76r7pm9u9u3gf7cds29lu3uaolvfcaqs@4ax.com> |
On 05/15/2012 11:38 PM, Barry Schwarz wrote: > On Tue, 15 May 2012 23:03:39 -0400, James Kuyper > <jameskuyper@verizon.net> wrote: ... >> calloc(a,b) must either return a pointer to enough memory to store 'a' >> objects, each of size 'b' bytes, or a null pointer. If the mathematical >> product of a*b is greater than SIZE_MAX, then (size_t)(a*b) bytes will >> not be sufficient to meet that requirement - but the requirement still >> holds. Therefore, calloc(a,b) must either return a null pointer, or >> allocate sufficient memory by some mechanism other than malloc(a*b). ... > array. size_t must be able to hold the size in bytes of the largest > possible object, including aggregates such as arrays. Citation, please? "sizeof(type)" must yield the size of the specified type, "sizeof expression" must yield the size of the type of the specified expression(6.5.3.4p2), and in either case that value must be have the type size_t (6.5.3.4p5). This does NOT add up to the requirement you state. Consider an implementation with the following characteristics: 1. It rejects all code that specifies any type with a size greater than SIZE_MAX, as exceeding that implementation's limits. If it were not permissible for a conforming implementation to reject such code, every implementation would be rendered non-conforming by it's inability to yield the required results for the expression sizeof(char[SIZE_MAX][2]). 2. calloc(a,b) can, at least for some values of a and b, return a non-null pointer which points at an array of a objects of size b, even if such an array requires more than SIZE_MAX bytes. It follows that on such an implementation, it's not possible to write an expression of the form sizeof(object) that would be required by the standard to yield the size of the array pointed at by the value returned by such a call to calloc(). Any such expression would necessarily require casting that pointer to point at a type with a size larger than SIZE_MAX, and as such would be rejected by that compiler. What requirement of the standard would be violated by such an implementation? Let me explain that more specifically. If you can declare a pointer p such that p = calloc(a,b); size_t size = sizeof(*p); would violate the requirements of 6.5.3.4 if calloc() returned a non-null pointer for a*b>SIZE_MAX, then it would ALSO violate those requirements if calloc() returned a null pointer. That's because the value of sizeof(*p) depends only upon the type of 'p', not the value of p. Therefore, you cannot use 6.5.3.4 to derive a requirement that calloc() return a null pointer. -- James Kuyper
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Remving an element from Queue arnuld <sunrise@invalid.address> - 2012-05-08 08:09 +0000
Re: Remving an element from Queue Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-05-08 08:01 -0400
Re: Remving an element from Queue arnuld <sunrise@invalid.address> - 2012-05-09 05:43 +0000
Re: Remving an element from Queue Barry Schwarz <schwarzb@dqel.com> - 2012-05-08 23:21 -0700
Re: Remving an element from Queue arnuld <sunrise@invalid.address> - 2012-05-09 09:27 +0000
Re: Remving an element from Queue James Kuyper <jameskuyper@verizon.net> - 2012-05-09 07:54 -0400
Re: Remving an element from Queue arnuld <sunrise@invalid.address> - 2012-05-09 13:18 +0000
Re: Remving an element from Queue Barry Schwarz <schwarzb@dqel.com> - 2012-05-09 10:59 -0700
Re: Remving an element from Queue arnuld <arnuld.mizong@gmail.com> - 2012-05-10 05:26 -0700
Re: Remving an element from Queue nick_keighley_nospam@hotmail.com - 2012-05-11 00:11 -0700
Re: Remving an element from Queue Barry Schwarz <schwarzb@dqel.com> - 2012-05-14 15:53 -0700
Re: Remving an element from Queue lawrence.jones@siemens.com - 2012-05-15 17:42 -0400
Re: Remving an element from Queue Barry Schwarz <schwarzb@dqel.com> - 2012-05-15 16:40 -0700
Re: Remving an element from Queue James Kuyper <jameskuyper@verizon.net> - 2012-05-15 23:03 -0400
Re: Remving an element from Queue Barry Schwarz <schwarzb@dqel.com> - 2012-05-15 20:38 -0700
Re: Remving an element from Queue Jens Gustedt <jens.gustedt@loria.fr> - 2012-05-16 08:09 +0200
Re: Remving an element from Queue James Kuyper <jameskuyper@verizon.net> - 2012-05-16 07:18 -0400
Re: Remving an element from Queue Barry Schwarz <schwarzb@dqel.com> - 2012-05-16 16:30 -0700
Re: Remving an element from Queue James Kuyper <jameskuyper@verizon.net> - 2012-05-17 09:09 -0400
Re: Remving an element from Queue Barry Schwarz <schwarzb@dqel.com> - 2012-05-17 11:48 -0700
Re: Removing an element from Queue James Kuyper <jameskuyper@verizon.net> - 2012-05-17 15:38 -0400
Re: Removing an element from Queue Barry Schwarz <schwarzb@dqel.com> - 2012-05-17 15:21 -0700
Re: Removing an element from Queue James Kuyper <jameskuyper@verizon.net> - 2012-05-17 19:08 -0400
Re: Removing an element from Queue Tim Rentsch <txr@alumni.caltech.edu> - 2012-05-19 09:05 -0700
Re: Removing an element from Queue lawrence.jones@siemens.com - 2012-05-20 15:10 -0400
Re: Removing an element from Queue Tim Rentsch <txr@alumni.caltech.edu> - 2012-05-21 09:00 -0700
Re: Remving an element from Queue Tim Rentsch <txr@alumni.caltech.edu> - 2012-05-19 08:49 -0700
Re: Remving an element from Queue Tim Rentsch <txr@alumni.caltech.edu> - 2012-05-17 12:36 -0700
Re: Remving an element from Queue nick_keighley_nospam@hotmail.com - 2012-05-08 05:09 -0700
Re: Remving an element from Queue "BartC" <bc@freeuk.com> - 2012-05-08 14:03 +0100
Re: Remving an element from Queue nick_keighley_nospam@hotmail.com - 2012-05-09 00:01 -0700
Re: Remving an element from Queue nick_keighley_nospam@hotmail.com - 2012-05-09 00:03 -0700
Re: Remving an element from Queue "BartC" <bc@freeuk.com> - 2012-05-09 10:37 +0100
Re: Remving an element from Queue nick_keighley_nospam@hotmail.com - 2012-05-09 03:05 -0700
Re: Remving an element from Queue arnuld <sunrise@invalid.address> - 2012-05-09 09:44 +0000
Re: Remving an element from Queue Mark Bluemel <mark.bluemel@googlemail.com> - 2012-05-08 06:07 -0700
Re: Remving an element from Queue Mark Bluemel <mark.bluemel@googlemail.com> - 2012-05-08 06:35 -0700
Re: Remving an element from Queue Johann Klammer <klammerj@NOSPAM.a1.net> - 2012-05-08 20:50 +0200
Re: Remving an element from Queue 88888 Dihedral <dihedral88888@googlemail.com> - 2012-05-11 00:39 -0700
csiph-web