scoped_ptr
и интеллектуальные указатели в целом не влияют на память, выделенную объектами, которые они содержат. Если по какой-то причине у вас есть scoped_ptr<std::vector<T> >
, тот факт, что std::vector<T>*
хранится в scoped_ptr
, совершенно не имеет значения, откуда std::vector<T>
получает свою память.
Конечно, тот факт, что std::vector<T>
уже является типом RAII (как и все другие классы стандартной библиотеки), который будет очищаться после себя, означает, что вставлять их в scoped_ptr
совершенно бессмысленно.
Короче говоря, то, о чем вы говорите, не имеет ничего общего с scoped_ptr
. Это связано с allocators , которые вы используете для своих контейнерных классов. Вы лаете не на то дерево.