| Overview | Group | Tree | Graph | Index | Concepts |

An instance of this abstract implementation class is a memory manager.
Its purpose is to delete automatically any memory used by a solver (an
instance of IloSolver) but not allocated on the Solver heap.
In other words, if your application systematically allocates memory for
a solver but does not use reversible allocation (by using
IloSolver::getHeap) to do so, yet you want that memory to be
deleted automatically, you should add a memory manager to the invoking
solver to delete that allocated memory.
Use the member function IloSolver::addMemoryManager to add a
memory manager to a solver. That member function will add the memory manager
to the list of memory mangers associated with the invoking solver. Then,
when the member function IloEnv::end is called for the
invoking solver or when the solver re-extracts the model during synchronization,
the virtual member function IlcMemoryManagerI::end will be called
for all the memory managers on that list.
IlcMemoryManagerI is an abstract implementation class, so
every time you define a subclass of this abstract class, you must redefine
the virtual member function IlcMemoryManagerI::end to delete
allocated memory appropriately.
Here is how we recommend that you use this class.
1. Define your own class.
class MyMemoryManager : public IlcMemoryManagerI{
void end();
};
void MyMemoryManager::end() {
}
2. At run time, use your new class like this:
s.addMemoryManager(new (s.getImpl()) MyMemoryManager());
See Also:
| Constructor and Destructor Summary | |
|---|---|
public | IlcMemoryManagerI() |
| Method Summary | |
|---|---|
protected virtual void | end() |
| Constructor and Destructor Detail |
|---|
This constructor creates a memory manager.
| Method Detail |
|---|
This member function automatically deletes memory not allocated on the
Solver heap. It must be redefined appopriately whenever you derive a
subclass of IlcMemoryManagerI.