Эта проблема беспокоила меня долгое время, пожалуйста, помогите мне, спасибо!
Вопрос 1:
{
{
std::shared_ptr<int*> t1 = make_shared<int *>(new int(3));
}
// here t1 is point heap,when the t1 died,the heap of int(3) is not free
// in stack is correct
{
std::shared_ptr<int> t1 = make_shared<int>();
}
// how to reslove this ? Is `std::shared_ptr<int* >,std::shared_ptr<string* > ...` is forbiden?
}
да, я хочу, чтобы ponts структура, но это делает не получается вызвать деструктор ,, как в этом примере
class DelTest
{
public:
DelTest() {
cout << " DelTest()" << ":" << i++ << endl;
}
~DelTest() {
cout << "~ DelTest()" << ":" << j++ << endl;
}
};
void test()
{
std::shared_ptr<DelTest*> t1 = make_shared<DelTest*>(new DelTest);
}
, когда тест пройден, ~ DelTest () не может работать; я хочу использовать std::map<int, std::shared_ptr<DelTest*>> m;
для замены std::map<int, DelTest*> m
;
std::map<int, std::shared_ptr<DelTest*>> m
for (auto it = m.begin(); it != m.end(); ++it)
{
m.erase(it);
}
~ DelTest () не работает