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 9 of 13 Topic 1067 of 1134
Post > Topic >>

Re: Confusion of Malloc and Sizeof

by Erik Trulsson <ertr1013@[EMAIL PROTECTED] > Mar 30, 2008 at 02:58 PM

shofu_au@[EMAIL PROTECTED]
 wrote:
> Hi Group,
> 
> How do you determine the number of elements in a dynamically allocated
> variable, without passing the number or having a global variable.

You can't.

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

You will have to pass the size of the buffer as a parameter to do_read(),
or store the size of the buffer in some global variable. (Using global
variables
is generally strongly discouraged for a number of reasons though.)

> 
> #include <stdio.h>
> #include <stdlib.h>
> 
> void do_read (char *buffer)
> {
>  int numCharAvailable ;
>  numCharAvailable = sizeof (*buffer);

sizeof works at compile time. It cannot be used to tell how much memory
has been dynamically allocated.
In this case 'sizeof(*buffer)' will return the size of the element
that 'buffer' is pointing to: the size of one char in this case
(which is always equal to 1 anyway.)

>  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?

You will have to keep track of it yourself.
There is no other ****table way of doing it.


The compiler and/or runtime library and/or OS will normally also keep
track
of this information somehow so it knows how much memory is to be freed
when
you call free(), but how it does that varies between different compilers
and
systems, and is usually not do***ented anyway.


-- 
<Insert your favourite quote here.>
Erik Trulsson
ertr1013@[EMAIL PROTECTED]
 
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 Fri Jul 25 21:12:19 CDT 2008.