To: linux-8086@vger.rutgers.edu
Cc: "ELKS List" <linux-8086@vger.rutgers.edu>
From: Perry Harrington <pedward@sun4.apsoft.com>
Date: Sat, 12 Jul 1997 20:37:53 -0700 (PDT)
Newsgroups: linux.dev.8086
Ok, to settle this once and for all. The code below is not unique
to any compiler, it's the standard C way of doing stuff. Take
this example
struct foo {
int one;
char two[15];
};
void main(void)
{
/* the next line makes the compiler add a stack entry of the
size of a pointer, commonly 4 bytes in 32 bit model, 2
in 16 bit */
struct foo *ptr;
/* now, the "sizeof" command is a compiler preprocessor usually,
it looks in it's symbol table for the size of the
data item and replaces the call with a constant, this
works because structs can't be declared at runtime.
Now, Microsoft and Borland diverge on this point,
Borland treats it as a compiler command, and Microsoft
allows it to be used to determine the size of a chunk
of memory, which technically AFAIK is incorrect */
ptr=malloc(sizeof(struct foo));
}
The above illustrates a rudimentary principal of C.
--Perry
>
> David Murn wrote:
> >
> > The reason I ask this, is that I've seen code before in which the
> > programmer has said:
> >
> > ptr=malloc(sizeof((struct)foo));
> >
> > Davey
>
> Uhh..why don't you code up an example and figure it out yourself, it
> would take all of two minutes if you know anything about what you're
> doing.
> Paul
> clements@cs.sc.edu
>
--
Perry Harrington Linux rules all OSes. APSoft ()
email: perry@apsoft.com Think Blue. /\
From Unofficial Linux-8086 Mailing List Archive (ULMLA)
Maintained by Robert
Robert's Mailing List Archive Page
Archive created with babymail