bause@anton.informatik.uni-dortmund.de ( ??? Bause ???) (08/03/90)
Thanks to all, who have answered me. A list of answers is following: Falko ============================================================================ From jbuck@ohm.berkeley.edu Wed Aug 1 21:16:09 1990 To: bause@unido.uucp (Falko Bause) Subject: Re: Zortech Problem: heap corrupted In article <2353@laura.UUCP> you write: |> A friend of mine is using Zortech 2.0. He uses hashed search tables and |> binary tree search tables. After some insertions into both tables he gets |> the error message: heap corrupted. |> |> Is this is known error of Zortech's C++? No. Zortech C++ is detecting an error in your friend's program. The heap is corrupted if you try to delete the same memory twice, or if you write on memory that has already been deleted. Have him check all use of new and delete, and also look at how his destructors are written. The term "heap" refers to the hunk of memory managed by the new and delete operators (or, in C, malloc and free). -- Joe Buck jbuck@galileo.berkeley.edu {uunet,ucbvax}!galileo.berkeley.edu!jbuck ============================================================================ From bright@dataio.uucp Thu Aug 2 16:06:52 1990 To: bause@unido.uucp Newsgroups: comp.lang.c++ Subject: Re: Zortech Problem: heap corrupted Summary: Expires: References: <2353@laura.UUCP> Sender: Followup-To: Distribution: Organization: Data I/O Corporation; Redmond, WA Keywords: In article <2353@laura.UUCP> bause@unido.uucp (Falko Bause) writes: <A friend of mine is using Zortech 2.0. He uses hashed search tables and <binary tree search tables. After some insertions into both tables he gets <the error message: heap corrupted. <Is this is known error of Zortech's C++? <Please answer by e-mail to bause@unido.uucp The "heap is corrupted" message is generated by the free() function under the following conditions: o An odd pointer is passed to free(). o A pointer is passed to free() that was not returned by malloc(), calloc() or realloc(). o A pointer is free'd more than once. o A wild pointer has trashed the free list data structure. A common source of this error in C++ programs is when the compiler generates a default copy constructor, and the objects contain pointers to malloc'd data. (It's not a compiler bug!) =============================================================================== From laura!unido!mcsun!sunic!tut!funic!santra!hutcs.hut.fi!jaa Fri Aug 3 12:25:43 MET DST 1990 Article 7816 of comp.lang.c++: Path: laura!unido!mcsun!sunic!tut!funic!santra!hutcs.hut.fi!jaa >From: jaa@hutcs.hut.fi (Jari Alasuvanto) Newsgroups: comp.lang.c++ Subject: Re: Zortech Problem: heap corrupted Message-ID: <1990Aug3.060516.7577@santra.uucp> Date: 3 Aug 90 06:05:16 GMT References: <2353@laura.UUCP> <2605@dataio.Data-IO.COM> Sender: news@santra.uucp (Cnews - USENET news system) Organization: Helsinki University of Technology, Finland Lines: 31 Posted: Fri Aug 3 07:05:16 1990 In article <2605@dataio.Data-IO.COM> bright@Data-IO.COM (Walter Bright) writes: > >The "heap is corrupted" message is generated by the free() function under >the following conditions: <A list of conditions deleted> >A common source of this error in C++ programs is when the compiler generates >a default copy constructor, and the objects contain pointers to malloc'd >data. (It's not a compiler bug!) I would add one common one to the list: a bug in your code using strings (applies to C as well): void causeError( const char* aString) { char* tmp = new char[ strlen(aString) ] ; // OOPS, forgot to add one for // terminating null strcpy ( tmp, aString ) ; } Errors of this kind will most likely go unnoticed for Motorola based machines and SPARCs, but with Intel-based architecture, the heap gets corrupted. This is due to different byte ordering. Check your code first before the compiler. -- Jari Alasuvanto, Lab. of Info Proc. Sci, Helsinki Univ. of Techology, Finland Internet: jaa@hutcs.hut.fi tel: +358-0-451 3236 fax: +358-0-465 077 <All the statements are my own -- HUT can make its own>>