123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- // placenew1.cpp -- new, placement new, no delete
- #include <iostream>
- #include <string>
- #include <new>
- using namespace std;
- const int BUF = 512;
- class JustTesting
- {
- private:
- string words;
- int number;
- public:
- JustTesting(const string & s = "Just Testing", int n = 0)
- {words = s; number = n; cout << words << " constructed\n"; }
- ~JustTesting() { cout << words << " destroyed\n";}
- void Show() const { cout << words << ", " << number << endl;}
- };
- int main()
- {
- char * buffer = new char[BUF]; // get a block of memory
- JustTesting *pc1, *pc2;
- pc1 = new (buffer) JustTesting; // place object in buffer
- pc2 = new JustTesting("Heap1", 20); // place object on heap
-
- cout << "Memory block addresses:\n" << "buffer: "
- << (void *) buffer << " heap: " << pc2 <<endl;
- cout << "Memory contents:\n";
- cout << pc1 << ": ";
- pc1->Show();
- cout << pc2 << ": ";
- pc2->Show();
- JustTesting *pc3, *pc4;
- pc3 = new (buffer) JustTesting("Bad Idea", 6);
- pc4 = new JustTesting("Heap2", 10);
- cout << "Memory contents:\n";
- cout << pc3 << ": ";
- pc3->Show();
- cout << pc4 << ": ";
- pc4->Show();
-
- delete pc2; // free Heap1
- delete pc4; // free Heap2
- delete [] buffer; // free buffer
- cout << "Done\n";
- // std::cin.get();
- return 0;
- }
|