comp.lang.ada
 help / color / mirror / Atom feed
From: alex goldman <hello@spamm.er>
Subject: Re: memory management
Date: Fri, 03 Jun 2005 03:12:50 -0700
Date: 2005-06-03T03:12:50-07:00	[thread overview]
Message-ID: <1176609.QemMZIaVxk@yahoo.com> (raw)
In-Reply-To: M-GdnSTkAoGSKALfRVn-vQ@comcast.com

Steve wrote:

> struct Data_Container
> {
>     int nbValues;
>     int data[1];
> }
> 
> ...
> numElements = 100;
> struct Data_Container* dc = malloc( sizeof(Data_Container) + sizeof(int)
> *( numElements - 1));
> 
> dc->nbValues = numElements;
> for( i = 0 ; i < dc->nbValues ; i++ )
> {
>     dc->data[ i ] = 0;
> }

I think the results of doing this are undefined, according to the standard.
In fact, the section on pointer arithmetic says even something like

int* p = malloc(100*sizeof(int));

p = p + 101; // more than 1 off
p = p -  50; 
             

is allowed to lead to undefined behavior. The pointer doesn't even need to
be dereferenced! So the C standard certainly doesn't forbid bounds
checking. Why C compilers don't come with this feature as an /option/ has
always puzzled me.



  reply	other threads:[~2005-06-03 10:12 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-26  0:57 memory management alex goldman
2005-05-26  2:14 ` David C. Hoos, Sr.
2005-05-26 13:21   ` Steve
2005-05-26 18:40     ` alex goldman
2005-05-28  2:13       ` Steve
2005-05-28  5:19         ` Jeffrey Carter
2005-05-28 14:48           ` Steve
2005-05-26 18:47     ` Pascal Obry
2005-05-27 14:33   ` Martin Krischik
2005-05-26 12:10 ` Robert A Duff
2005-05-27 14:31   ` Martin Krischik
2005-05-28 11:44     ` Robert A Duff
2005-05-28 13:03       ` Simon Wright
2005-05-31 12:04         ` Robert A Duff
2005-06-02 15:42       ` Thomas Maier-Komor
2005-06-02 17:05         ` Robert A Duff
2005-06-03  1:41       ` Steve
2005-06-03 10:12         ` alex goldman [this message]
2005-06-13  4:01         ` Dave Thompson
  -- strict thread matches above, loose matches on Subject: below --
2005-04-19 20:30 Memory_Management Anh Vo
2005-04-19  1:39 Memory_Management Bini
2005-04-19  9:18 ` Memory_Management Duncan Sands
2005-04-20  1:06   ` Memory_Management Bini
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox