| delorie.com/archives/browse.cgi | search |
| From: | "Damian Yerrick" <web DOT poison AT pineight DOT 8m DOT com> |
| Newsgroups: | comp.os.msdos.djgpp |
| Subject: | Re: problem with new malloc.c see note at bottom attn: Eli Zaretskii |
| Date: | Fri, 24 Sep 1999 22:05:40 -0500 |
| Organization: | Rose-Hulman Institute of Technology |
| Lines: | 38 |
| Message-ID: | <7she9o$jkn$1@solomon.cs.rose-hulman.edu> |
| References: | <01JGCJLWUJ7A9I4LWV AT SLU DOT EDU> <20g103ddll DOT fsf AT Sky DOT inp DOT nsk DOT su> |
| NNTP-Posting-Host: | yerricde.laptop.rose-hulman.edu |
| X-Trace: | solomon.cs.rose-hulman.edu 938228856 20119 137.112.205.146 (25 Sep 1999 03:07:36 GMT) |
| X-Complaints-To: | news AT cs DOT rose-hulman DOT edu |
| NNTP-Posting-Date: | 25 Sep 1999 03:07:36 GMT |
| X-Priority: | 3 |
| X-MSMail-Priority: | Normal |
| X-Newsreader: | Microsoft Outlook Express 5.00.2314.1300 |
| X-MimeOLE: | Produced By Microsoft MimeOLE V5.00.2314.1300 |
| To: | djgpp AT delorie DOT com |
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
| Reply-To: | djgpp AT delorie DOT com |
Michael Bukin <M DOT A DOT Bukin AT inp DOT nsk DOT su> wrote in message
news:20g103ddll DOT fsf AT Sky DOT inp DOT nsk DOT su...
> GAMMELJL AT SLU DOT EDU writes:
>
> > zvector w1;
> >
> > zvector operator+(zvector w8,zvector w9)
> > { int zi;
> > for (zi=1;zi<length+1;zi++)
> > {w1.s[zi+1]=w8.s[zi+1] + w9.s[zi+1];
> > }
> > return w1;
> > }
> >
> > g=e+f;
>
> This assignment will use default assignment operator, which will copy
> all members from w1 to g. Your class contains pointer to dynamically
> allocated memory, and after this assignment you have several classes
> which contain the same pointer, which is then deleted several times in
> destructors of those global objects (they are called before program
> terminates). Freeing pointer twice may lead to crash, because free
> does not check whether pointer is valid.
Whenever you free() a block through a pointer, set the pointer to
NULL just to be safe.
I also see a fence post error. This code copies all elements from s[2] to
s[length + 1].
Remove the +1's and change zi's initial value to 0; then write back.
--
Damian Yerrick
http://pineight.webjump.com/
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |