Windows Resources, like GDI Handles, are hard to manage correctly without creating leaks. This article shows how smart pointers can simplify this, and almost eliminate a major source of errors. It continues my previous article, Smart Pointers to boost your code, providing a practical example for using shared_ptr. (If you are not familiar with boost::shared_ptr, you should read it now!)
Я только не понял, почему именно shared_ptr, а не intrusive_ptr, ведь хэндлы системных объектов сами умеют подсчитывать ссылки (DuplicateHandle/CloseHandle)?
Здравствуйте, Кодт, Вы писали:
К>Я только не понял, почему именно shared_ptr, а не intrusive_ptr, ведь хэндлы системных объектов сами умеют подсчитывать ссылки (DuplicateHandle/CloseHandle)?
Может быть, причина в том, что DuplicateHandle() не работает с объектами GDI, а автор хотел все сделать универсально?
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, SchweinDeBurg, Вы писали:
<>>
К>Я только не понял, почему именно shared_ptr, а не intrusive_ptr, ведь хэндлы системных объектов сами умеют подсчитывать ссылки (DuplicateHandle/CloseHandle)?
Да? А сколько такой подсчет ссылок стоит? К тому же, инкрементировать счётчик ссылок DuplicateHandle -- всё равно что забивать гвозди микроскопом.
SDB>Windows Resources, like GDI Handles, are hard to manage correctly without creating leaks. This article shows how smart pointers can simplify this, and almost eliminate a major source of errors. It continues my previous article, Smart Pointers to boost your code, providing a practical example for using shared_ptr. (If you are not familiar with boost::shared_ptr, you should read it now!)
Чего-то не внушает... Слишком все прямолинейно как-то.
Здравствуйте, Шахтер, Вы писали:
Ш>Да? А сколько такой подсчет ссылок стоит? К тому же, инкрементировать счётчик ссылок DuplicateHandle -- всё равно что забивать гвозди микроскопом.