Article View: pl.comp.lang.c
Article #307949Sprytne wskaźniki
From: Borneq
Date: Sun, 13 Dec 2015 09:06
Date: Sun, 13 Dec 2015 09:06
17 lines
1820 bytes
1820 bytes
Jak za pomocą sprytnych wskaźników dobrze napisać przykład, gdzie pole jednej struktury wskazuje na drugą a drugiej, może nie bezpośrednio na pierwszą? Jedna sytuacja to rodzaj "drzewiastości", gdzie typ jednego pola wskazuje na podległe obiekty a może istnieć pole drugiego typu w rodzaju owner,parent. Druga sytuacja to linked list, która to lista może być cykliczna. W łańcuchach znaków może z powodzeniem być zliczanie referencji, ponieważ nie ma tam pól wskazujących na inne struktury. Mamy tu pewien narzut, bo w systemie 64-bitowych, zarówno licznik referencji jak i pole długości stringa powinny być 64 bitowe. W książce o Boost jest przykład, gdzie przydają się nawet te prostsze klasy jak scoped_ptr: klasa ma pole wskaźnikowe, podczas wołania konstruktora nastąpił wyjątek po przydzieleniu pamięci do tego pola. Destruktor nie zostanie wywołany, ale gdy mamy sprytne wskaźniki, to może zostać zwolnione pamięć wskazywana przez to pole.
Technical Details
Message-ID:
<n4jcd8$d8m$1@node1.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: Borneq <borneq@antyspam.hidden.pl> Newsgroups: pl.comp.lang.c Subject: Sprytne wskaźniki Date: Sun, 13 Dec 2015 10:06:14 +0100 Organization: ATMAN - ATM S.A. Lines: 17 Message-ID: <n4jcd8$d8m$1@node1.news.atman.pl> NNTP-Posting-Host: 91.239.205.105 Mime-Version: 1.0 X-Trace: node1.news.atman.pl 1449997544 13590 91.239.205.105 (13 Dec 2015 09:05:44 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Sun, 13 Dec 2015 09:05:44 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 X-Mozilla-News-Host: news://news.atman.pl:119 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit