Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C Moderated > Re: Confusion o...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 10 of 13 Topic 1067 of 1126
Post > Topic >>

Re: Confusion of Malloc and Sizeof

by gordonb.lbk55@[EMAIL PROTECTED] (Gordon Burditt) Mar 30, 2008 at 02:58 PM

>How do you determine the number of elements in a dynamically allocated
>variable, without passing the number or having a global variable.

By remembering the number and passing it somehow or putting it in
a global variable.  There are more imaginative ways than using a
global variable or passing it as a second function argument.

Some people use arrays of integers (assuming that's what they want
to store) and store the length in a[0].

Another approach is to have a structure containing a pointer to the
array and the length allocated (and perhaps the number of elements
CURRENTLY in use as well as the number allocated), and pass around
pointers to that structure.  This permits routines that use it to
be able to determine that the array needs to grow, and to let
subsequent users know it has grown.


>For instance in my example how do I determine the number of characters
>available to write into?

Given this interface, the only safe assumption is to assume that
numCharAvailable = 1   .  Hopefully you will never pass in the
result of malloc(0).

>#include <stdio.h>
>#include <stdlib.h>
>
>void do_read (char *buffer)
>{
>  int numCharAvailable ;
>  numCharAvailable = sizeof (*buffer);
>  printf ( "Number of elements available %d\n", numCharAvailable);
>}
>
>int main (int argc, char **argv)
>{
>  char *readBuffer;
>  readBuffer = (char *) malloc (15);
>  do_read (readBuffer);
>}
>
>I wish to use the readBuffer pointer in ASYNC callbacks and I would
>like to know the number of elements dynamically allocated?

Then remember it when you allocated it.
-- 
comp.lang.c.moderated - moderation address: clcm@[EMAIL PROTECTED]
 -- you must
have an appropriate newsgroups line in your header for your mail to be
seen,
or the newsgroup name in square brackets in the subject line.  Sorry.
 




 13 Posts in Topic:
Confusion of Malloc and Sizeof
shofu_au@[EMAIL PROTECTED  2008-03-28 19:20:27 
Re: Confusion of Malloc and Sizeof
=?ISO-8859-1?Q?Hans-Bernh  2008-03-30 14:58:44 
Re: Confusion of Malloc and Sizeof
Chris McDonald <chris@  2008-03-30 14:58:13 
Re: Confusion of Malloc and Sizeof
Carl Barron <cbarron41  2008-03-30 14:58:26 
Re: Confusion of Malloc and Sizeof
=?utf-8?Q?Dag-Erling_Sm=C  2008-03-30 14:58:47 
Re: Confusion of Malloc and Sizeof
Jack Klein <jackklein@  2008-03-30 14:58:24 
Re: Confusion of Malloc and Sizeof
Barry Schwarz <schwarz  2008-03-30 14:58:33 
Re: Confusion of Malloc and Sizeof
Thomas Richter <thor@[  2008-03-30 14:58:41 
Re: Confusion of Malloc and Sizeof
Erik Trulsson <ertr101  2008-03-30 14:58:35 
Re: Confusion of Malloc and Sizeof
gordonb.lbk55@[EMAIL PROT  2008-03-30 14:58:18 
Re: Confusion of Malloc and Sizeof
Ulrich Eckhardt <dooms  2008-03-30 14:58:29 
Re: Confusion of Malloc and Sizeof
jgd@[EMAIL PROTECTED] (J  2008-03-30 14:58:38 
Re: Confusion of Malloc and Sizeof
Barry Schwarz <schwarz  2008-03-30 14:58:33 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Wed Jul 9 0:47:42 CDT 2008.