База Hintsage

Управление памятью

RAII, время жизни объектов, указатели и владение ресурсами.

Практика

Вопросы: Управление памятью

В контейнере хранится набор объектов с единственным владельцем. Определите, что произойдёт с владением ресурсами после перемещения контейнера:

#include <memory>
#include <vector>

int main() {
    std::vector<std::unique_ptr<int>> source;
    source.push_back(std::make_unique<int>(42));

    auto target = std::move(source);
}

Кому принадлежат объекты после этой операции и что гарантируется о состоянии source?

Рассмотрите создание владельца из сырого указателя. Предположим, что после успешного new выделение control block для std::shared_ptr завершается исключением. Кто освободит объект?

#include <memory>

struct Deleter {
    void operator()(int* p) const noexcept {
        delete p;
    }
};

void create() {
    std::shared_ptr<int> value(new int(42), Deleter{});
}

Показано 120 из 50