VIP Умные указатели в C++

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Умные указатели автоматически управляют памятью. Разберем использование.

unique_ptr
Код:
#include <iostream>
#include <memory>
using namespace std;

int main() {
    unique_ptr<int> ptr = make_unique<int>(42);
    cout << *ptr << endl;
    
    // Автоматическое освобождение при выходе из области видимости
    return 0;
}

shared_ptr
Код:
#include <iostream>
#include <memory>
using namespace std;

int main() {
    shared_ptr<int> ptr1 = make_shared<int>(42);
    shared_ptr<int> ptr2 = ptr1; // общий указатель
    
    cout << "Счетчик ссылок: " << ptr1.use_count() << endl;
    cout << "Значение: " << *ptr1 << endl;
    
    return 0;
}

weak_ptr
Код:
#include <iostream>
#include <memory>
using namespace std;

int main() {
    shared_ptr<int> shared = make_shared<int>(42);
    weak_ptr<int> weak = shared;
    
    if(auto locked = weak.lock()) {
        cout << "Значение: " << *locked << endl;
    }
    
    return 0;
}

Важные моменты:
- Используйте умные указатели вместо сырых
- Выбирайте правильный тип указателя
- Избегайте циклических ссылок
- Проверяйте указатели перед использованием

Умные указатели упрощают управление памятью!
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху