Open yanaskyrda opened 4 years ago
В c++, у ролі типу smart pointers виступають класи, а у ролі raw pointer - вказівники.
Raw pointers - це звичайні вказівники:
void UseRawPointer()
{
Song* pSong = new Song(L"Nothing on You", L"Bruno Mars");
// something...
// Don't forget to delete!
delete pSong;
}
Smart pointers автоматично видаляються при виході зі scope:
void UseSmartPointer()
{
unique_ptr<Song> song2(new Song(L"Nothing on You", L"Bruno Mars"));
// something...
wstring s = song2->duration_;
} // song2 is deleted automatically here.
Raw pinters звичайні вказівники створені за допомогою new, потрібно звільнити пам'ять за допомогою delete після використання. Smart pointers роблять це автоматично при виході з області видимості
Smart pointers автоматично видаляються, коли перестають бути видимими, а raw pointers - звичайні вказівники, пам'ять яку вони використовують потрібно очищати вручну.
У smart pointer'ах звільнення пам'яті відбувається автоматично
Raw pointer - стандарний покажччик у с++ Smart Pointer - класс, що здійснює автоматичне керування пам'ятю
У smart pointers відбувається автоматичне керування пам'яттю