From: "Rafał Maj" Newsgroups: comp.os.msdos.djgpp Subject: Odp: delete OR delete[] ? Date: Thu, 17 Aug 2000 18:54:22 +0200 Organization: Academic Computer Center CYFRONET AGH Lines: 59 Message-ID: <8nh5qk$h21$2@info.cyf-kr.edu.pl> References: <8ngta8$27b$2 AT info DOT cyf-kr DOT edu DOT pl> <399c05a2$1_1 AT news DOT uni-bielefeld DOT de> NNTP-Posting-Host: d-94-53-08.cyfronet.krakow.pl X-Trace: info.cyf-kr.edu.pl 966531732 17473 149.156.1.168 (17 Aug 2000 17:02:12 GMT) X-Complaints-To: news AT cyf-kr DOT edu DOT pl NNTP-Posting-Date: 17 Aug 2000 17:02:12 GMT X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2615.200 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Manni Heumann wrote > >What is difference between delete and delete[] ? > >With one should I use to delete array : char *ptr = new char[1024] ? > >When I'm overloading operator delete for some class, should I overload > >operator delete[] too ? > No offense, but someone, who is just learning how to use > delete, should not try to overload delete. I now that my question was wery simple, but I hope I'm NOT a newbie (at least in using new/delete). I asked this question because I think, that ther was a bug in C++ book, from witch I was learning. Example from book : ============ class cTest { public : void* operator new(unsigned long SIZE) { return new char[SIZE]; } void operator delete(void* THIS) { delete THIS; // <--- !!! } }; main() { cTest *ptr = new cTest; delete ptr; } ================== It looks like it should be delete[] THIS; right ? If I'll use in this example delete[] THIS, will then everything be allright ? I'm asking, because I was getting compiler warning : " `void *' is not a pointer-to-object type" unil I used : delete[] (char*)THIS; > Overloading operator delete is rarely necessary. I waned to overload it like this : void* operator new(unsigned long SIZE) memory_needed(SIZE); return new char[SIZE]; } Function memory_needed() will check size of free memory, and, if ther isn't enought, this function will unload some data from memory. > "Life would be much easier if I had the source code." That's right Rafal