Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- try
- {
- set<ArrType*> sHeap;
- ArrType* myArr = new ArrType[5];
- sHeap.Add(myArr);
- someExternalRoutine(myArr);
- ...
- }
- catch(CString s)
- {
- DeleteAllPointersInMyHeap(sHeap);
- throw(s);
- }
- try
- {
- set<ArrType*> sHeap;
- ArrType* myArr = new ArrType[5];
- sHeap.Add(myArr);
- someExternalRoutine(myArr);
- ...
- }
- {
- std::vector <ArrType> myArr(5);
- someExternalRoutine(myArr);
- }
- std::vector<ArrType>
- boost::ptr_vector<ArrType>
- template <class T>
- class Garbage
- {
- std::vector<T *> v;
- Garbage(const Garbage &);
- Garbage operator=(const Garbage &);
- public:
- Garbage() {}
- ~Garbage()
- {
- for (std::vector<T *>::iterator i = v.begin();
- i != v.end(); ++i) delete *i;
- }
- void swap(Garbage<T> &other)
- {
- v.swap(other.v);
- }
- T *remember(T *i)
- {
- v.push_back(i);
- return i;
- }
- void forget(T *i)
- {
- v.erase(std::remove(v.begin(), v.end(), i), v.end());
- }
- };
- Garbage<Thing> g;
- Thing *t1 = g.remember(new Thing());
- Thing *t2 = g.remember(new Thing());
- // decide we want to keep t1:
- g.forget(t1);
Add Comment
Please, Sign In to add comment