Активный
- Тема Автор
- #1
Умные указатели автоматически управляют памятью. Разберем использование.
unique_ptr
shared_ptr
weak_ptr
Важные моменты:
- Используйте умные указатели вместо сырых
- Выбирайте правильный тип указателя
- Избегайте циклических ссылок
- Проверяйте указатели перед использованием
Умные указатели упрощают управление памятью!
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;
}
Важные моменты:
- Используйте умные указатели вместо сырых
- Выбирайте правильный тип указателя
- Избегайте циклических ссылок
- Проверяйте указатели перед использованием
Умные указатели упрощают управление памятью!