From: apsh AT ecr DOT mu DOT oz DOT au (Alistair_P SHILTON) Newsgroups: comp.os.msdos.djgpp Subject: Strange behaviour of new/delete Date: 7 Jun 2000 05:50:10 GMT Organization: Computer Science, University of Melbourne Lines: 59 Message-ID: <8hknqj$gki$1@mulga.cs.mu.OZ.AU> NNTP-Posting-Host: gromit.ecr.mu.oz.au X-Trace: mulga.cs.mu.OZ.AU 960357011 17042 128.250.61.61 (7 Jun 2000 05:50:10 GMT) X-Complaints-To: usenet AT cs DOT mu DOT OZ DOT AU NNTP-Posting-Date: 7 Jun 2000 05:50:10 GMT X-Newsreader: TIN [version 1.2 PL2] To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com I was wondering if anyone else has encountered trouble with new/delete. I have a function which allocates memory with new as follows: double **res; res = new double *[3]; if ( res == NULL ) { return NULL; } a = new double[i]; if ( a == NULL ) { return NULL; } b = new double[1]; if ( b == NULL ) { return NULL; } c = new double[size-i+1]; if ( c == NULL ) { return NULL; } res[0] = a; res[1] = b; res[2] = c; For simplicity, I've allocated 1 double too much to a and c. Later on I delete as follows: (res has since become removal) delete removal[0]; printf("0 down\n"); delete removal[1]; printf("1 down\n"); delete removal[2]; printf("2 down\n"); printf("freed partial removal\n"); delete removal; printf("free mem\n"); (ignore the printf's - I was debugging). The odd behaviour is this - if I don't actually use a or c (don't put anything in them), then it hangs at delete removal[2] (even though a non zero amount of memory was allocated)!! I've checked on unix, and it works fine - so is this a known bug with djgpp, or am I missing something? ---------------------------------------------------- Thanks Alistair Shilton http://www.ee.mu.oz.au/pgrad/apsh