Объясните, пожалуйста, следующие вещи.Имеет ли смысл использовать «новое» при создании std :: set?
#include <iostream>
#include <set>
int main() {
std::set<int>* a = new std::set<int>;
a->insert(2);
a->insert(5);
for (std::set<int>::iterator it = a->begin(); it != a->end(); it++) {
std::cout << *it << std::endl;
}
std::cout << "Deleting a....." << std::endl;
delete a;
for (std::set<int>::iterator it = a->begin(); it != a->end(); it++) {
std::cout << *it << std::endl;
}
return 0;
}
$ g++ test6.cpp && a
2
5
Deleting a.....
2
5
3544585
- Есть ли какой-либо смысл использовать оператор новый создания станд :: установить? Как я читал в руководствах, std :: set имеет свой собственный объект Allocator, который отвечает за распределение динамической памяти с помощью оператора . Но интересно познакомиться с опытными членами.
- Почему после освобождения памяти с помощью удалить членов станда :: набора все еще имеющийся и имеет значение 2 и 5, как перед тем удалить. И какой правильный способ удалить член a. Спасибо.
В этом случае он не является полностью ненужным. – CoryKramer
[Выделение указателя, который был удален, является неопределенным поведением.] (Http://stackoverflow.com/a/2896267/2721883) – clcto
http://stackoverflow.com/a/6445794/2756719 обращается к аналогичной ситуации. –