Предположим, я реализовал scoped_ptr
:
template <typename T> class scoped_ptr {
public:
scoped_ptr() = delete;
explicit scoped_ptr(T *ptr) : _ptr(ptr){};
~scoped_ptr() {
delete _ptr;
_ptr = nullptr;
};
scoped_ptr(const scoped_ptr &p) = delete;
scoped_ptr &operator=(const scoped_ptr &p) = delete;
T *operator->() const { return _ptr; }
T &operator*() const { return *_ptr; }
T *get() const { return _ptr; }
void reset(T *p = nullptr) {
delete _ptr;
_ptr = p;
}
private:
T *_ptr;
};
Я хочу проверить, что память фактически освобождается после истечения времени жизни указателя, но я не могу проверить это, разыменовав этот необработанный указатель _ptr
, поскольку ожидается, что память, на которую он указывал, должна быть уже освобождена. Тогда как мне это проверить?