Теперь я реализую класс, и мне нужно использовать вектор для хранения некоторых указателей. Это глобальный член. вектор g_vIPControlCollection;Мне нужно вызвать деструктор вектора в этом сценарии
Когда система завершит работу. Я хочу вернуть память. Затем я определяю метод destroy.
void Destroy()
{
int size = g_vIPControlCollection.size();
if (size > 1)
{
for (int i = 0; i < size; i++)
{
g_vIPControlCollection[i]->Release();
}
}
g_vIPControlCollection.clear();
g_vIPControlCollection.~vector<IPersistorControl*>(); //Does this line is necessary?
}
Вопрос в том, нужно ли мне называть деструктор вектора? Заранее спасибо. Ваша помощь будет принята с благодарностью.
Поскольку релиз не деструктор объекта, и он используется только для уменьшения счетчика ссылок. Может ли смарт-указатель автоматически вызывать его, когда вектор очищает все члены? – Goleo8
@ Goleo8 Нет. Это не так. Но если вам нужен объект подсчета ссылок, не был ли 'std :: shared_ptr <>' лучший выбор? Я имею в виду, кто когда-либо (клиент) получает объекты, должен получить его как 'std :: shared_ptr <>'. Для получения дополнительной информации http://stackoverflow.com/a/11824317/1180117 – Kiran