Бьерн Страуструп.
Язык программирования С++
179
X* q = new(Shared) X(i);
// X
в разделяемой памяти
//
...
}
Если мы помещаем объект в область памяти, которая непосредственно не управляется стандартными
функциями распределения свободной памяти, то надо позаботиться о правильном уничтожении
объекта. Основным средством здесь является явный вызов деструктора:
void h(X* p)
{
p->~X();
// вызов деструктора
Persistent->free(p);
// освобождение памяти
}
Заметим, что явных вызовов деструкторов, как и глобальных
функций размещения специального
назначения, следует, по возможности, избегать. Бывают случаи, когда обойтись без них трудно, но
новичок должен трижды подумать, прежде чем использовать явный вызов деструктора, и должен
сначала посоветоваться с более опытным коллегой.
Достарыңызбен бөлісу: