Кажется, что существует прямой способ:
Если вы действительно хотите просто переименовать филиалы удаленно (без переименования каких-либо локальных ветвей одновременно), вы можете сделать это с помощью одной команды например
git push
/ :refs/heads/ : https://stackoverflow.com/a/21302474/2586761
blockquote>См. оригинальный ответ для более подробной информации
станд.:: карта не управляет памятью, на которую указывают значения указателя - Вам решать, чтобы сделать это самостоятельно. Если Вы не хотите использовать интеллектуальные указатели, можно записать бесплатную и ясную функцию общего назначения как это:
template <typename M> void FreeClear( M & amap )
for ( typename M::iterator it = amap.begin(); it != amap.end(); ++it ) {
delete it->second;
}
amap.clear();
}
И используйте его:
std::map< int, A * > my_map;
// populate
FreeClear( my_map )
;
При хранении указателей на карте (или список, или что-либо как этот) ВЫ - ответственное за удаление указателей, так как карта не знает, были ли они созданы с новым, или нет. Ясная функция только вызывает деструкторы, если Вы не используете указатели.
О, и еще одна вещь: вызов деструктора (или даже вызов удаляют) не означает, что к памяти нельзя больше получать доступ. Это только означает доступ к мусору, если Вы сделаете.
Поэтому map.clear()
деструкторы вызовов данных содержатся в карте, в Вашем случае, указателя на a
. И это ничего не делает.
Вы могли бы хотеть поместить некоторый интеллектуальный указатель в карту для памяти, занятой a
быть автоматически исправленным.
BTW, почему Вы помещаете аргументы шаблона в вызов к make_pair
? Вычет аргумента шаблона должен сделать вполне прилично здесь.
При освобождении части памяти "кучи" ее содержание не становится обнуленным. Они просто доступны для выделения снова. Конечно, необходимо считать память не доступной, потому что эффекты доступа к освобожденной памяти не определены.
На самом деле предотвращение доступа к странице памяти происходит на более низком уровне, и библиотеки станд. не делают этого.
При выделении памяти с новым необходимо удалить ее сами, если Вы не используете интеллектуальный указатель.
Любые магазины товаров для хранения Ваш тип объекта и вызывают соответствующих конструкторов: внутренний код каждый узел мог бы выглядеть подобным:
__NodePtr
{
*next;
__Ty Val;
}
То, когда Вы выделяете его, происходит путем построения val на основе типа и затем соединения. Что-то подобное:
_Ty _Val = _Ty();
_Myhead = _Buynode();
_Construct_n(_Count, _Val);
То, когда Вы удаляете его, называет соответствующие деструкторы.
При хранении ссылок (указатели), это не вызовет конструктора, ни это разрушит.