> From: Christopher Schultz [mailto:ch...@christopherschultz.net]
> Subject: Re: [OT] JNI problem
> 
> I saw the same thing at first glance, but then I looked-up the sizeof()
> operator and it seems that sizeof /can/ return the number of bytes in
> an array in C99

Minor correction: the operator is sizeof, not sizeof() - it is not a function.  
The parentheses one often sees with sizeof are either unnecessary (when used 
around a variable name) or a *cast* operator, when used with a type.  The 
sizeof operator always returns the number of bytes occupied by the type of the 
operand, which is the declared size, not any associated dynamically allocated 
size.  For example:

char array[6];
char * ptr;
struct string {
  int len;
  char body[];
};
struct string sptr = malloc(sizeof (struct string) + 8);

sizeof array returns 6
sizeof ptr returns 4 or 8, depending on platform
sizeof (struct string) returns 4 (usually; sometimes 8) - the length of the int
sizeof sptr returns 4 or 8, depending on platform
sizeof *sptr returns the same as sizeof (struct string)

 - Chuck


THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY 
MATERIAL and is thus for use only by the intended recipient. If you received 
this in error, please contact the sender and delete the e-mail and its 
attachments from all computers.


Reply via email to