home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C13 / GlobalNew.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  835 b   |  41 lines

  1. //: C13:GlobalNew.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // Overload global new/delete
  7. #include <cstdio>
  8. #include <cstdlib>
  9. using namespace std;
  10.  
  11. void* operator new(size_t sz) {
  12.   printf("operator new: %d Bytes\n", sz);
  13.   void* m = malloc(sz);
  14.   if(!m) puts("out of memory");
  15.   return m;
  16. }
  17.  
  18. void operator delete(void* m) {
  19.   puts("operator delete");
  20.   free(m);
  21. }
  22.  
  23. class S {
  24.   int i[100];
  25. public:
  26.   S() { puts("S::S()"); }
  27.   ~S() { puts("S::~S()"); }
  28. };
  29.  
  30. int main() {
  31.   puts("creating & destroying an int");
  32.   int* p = new int(47);
  33.   delete p;
  34.   puts("creating & destroying an s");
  35.   S* s = new S;
  36.   delete s;
  37.   puts("creating & destroying S[3]");
  38.   S* sa = new S[3];
  39.   delete []sa;
  40. } ///:~
  41.