X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: Martin Ambuhl User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317) X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Re: pointers in Strucrure assignment problem References: <1120713425 DOT 526371 DOT 222910 AT g47g2000cwa DOT googlegroups DOT com> In-Reply-To: <1120713425.526371.222910@g47g2000cwa.googlegroups.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Lines: 48 Message-ID: Date: Thu, 07 Jul 2005 07:18:11 GMT NNTP-Posting-Host: 165.247.43.38 X-Complaints-To: abuse AT earthlink DOT net X-Trace: newsread2.news.atl.earthlink.net 1120720691 165.247.43.38 (Thu, 07 Jul 2005 00:18:11 PDT) NNTP-Posting-Date: Thu, 07 Jul 2005 00:18:11 PDT Organization: EarthLink Inc. -- http://www.EarthLink.net To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com aveo wrote: > Hi all, > Output of following program is unexpected. > It affecting all elements of LD insted of 0th element > Plz help me out. [...] > typedef struct LineDate > { > unsigned char *LinePtr; > int LineCount; > }LD1; > > LD1 LD[100]; > > void main(void) main returns an int in a hosted environment for either C or C++. > { > int i; > //Intitialize LineData Structure---->>>>> > for(i=0;i<=99;i++) > { > LD[i].LinePtr = (char *)calloc( 100, sizeof(char) ); sizeof(char) is 1 by definition, and, if this is C, the cast serves only to mask the error of not #including . You should also test for the success of calloc. > LD[i].LinePtr=""; The second of these causes you to 1) lose the value returned by calloc 2) create a memory leak 3) assign LD[i].LinePtr to point to the string literal "", Further, since you used calloc, the strings are set to be empty anyway, so the seconde line is pointless. A more efficient approach is #define STRSIZE 100 if (!(LD[i].LinePtr = malloc(STRSIZE))) { /* handle error */ } *LD[i].LinePtr = 0;