Punter intel·ligent

Punter intel·ligent

Tipustipus abstracte de dades Modifica el valor a Wikidata
Característiques tècniques
PlataformaBiblioteca estàndard de C++
Donar sentit als punters intel·ligents

En informàtica, un punter intel·ligent és un tipus de dades abstracte que simula un punter alhora que ofereix funcions afegides, com ara la gestió automàtica de la memòria o la comprovació de límits. Aquestes característiques estan destinades a reduir els errors causats per l'ús indegut dels punters, tot mantenint l'eficiència. Els punters intel·ligents solen fer un seguiment de la memòria a la qual apunten i també es poden utilitzar per gestionar altres recursos, com ara connexions de xarxa i identificadors de fitxers. Els punters intel·ligents es van popularitzar per primera vegada en el llenguatge de programació C++ durant la primera meitat de la dècada de 1990 com a refutació de les crítiques a la manca de recollida automàtica d'escombraries de C++.[1]

El mal ús del punter pot ser una font important d'errors. Els punters intel·ligents eviten la majoria de situacions de fuites de memòria fent que la desassignació de memòria sigui automàtica. De manera més general, fan que la destrucció d'objectes sigui automàtica: un objecte controlat per un punter intel·ligent es destrueix automàticament (finalitzat i després desassignat) quan es destrueix l'últim (o únic) propietari d'un objecte, per exemple perquè el propietari és una variable local, i l'execució deixa l'abast de la variable. Els punters intel·ligents també eliminen els punters penjants posposant la destrucció fins que un objecte ja no s'utilitza.[2]

Si un llenguatge admet la recollida automàtica d'escombraries (per exemple, Java o C#), els punters intel·ligents no són necessaris per a la recuperació i els aspectes de seguretat de la gestió de la memòria, però són útils per a altres finalitats, com ara la gestió de residència de l'estructura de dades de la memòria cau i la gestió de recursos d'objectes com ara com a identificadors de fitxers o endolls de xarxa.[3]

Existeixen diversos tipus de punters intel·ligents. Alguns treballen amb el recompte de referències, d'altres assignant la propietat d'un objecte a un punter.[4]

Història

Tot i que C++ va popularitzar el concepte de punters intel·ligents, especialment la varietat de referències comptades, el predecessor immediat d'un dels llenguatges que van inspirar el disseny de C++ tenia referències comptades per referències incorporades al llenguatge. C++ es va inspirar en part en Simula67. L'avantpassat de Simula67 era Simula I. En la mesura que l' element de Simula I és anàleg al punter de C++ sense null, i en la mesura que el procés de Simula I amb una declaració ficticia com a cos d'activitat és anàleg a l'estructura de C++ (que en si mateix és anàloga al registre de CAR Hoare en el treball contemporani dels anys 60). ), Simula Tenia elements comptats de referència (és a dir, expressions de punter que contenen indirectament) als processos (és a dir, registres) a tot tardar el setembre de 1965, tal com es mostra als paràgrafs citats a continuació.

Característiques

En C++, un punter intel·ligent s'implementa com a classe de plantilla que imita, mitjançant la sobrecàrrega d'operadors, els comportaments d'un punter tradicional (en brut), (per exemple, desreferenciació, assignació) alhora que proporciona funcions addicionals de gestió de memòria.

Els punters intel·ligents poden facilitar la programació intencionada expressant, en el tipus, com es gestionarà la memòria del referent del punter. Per exemple, si una funció C++ retorna un punter, no hi ha manera de saber si la persona que truca ha d'esborrar la memòria del referent quan la persona que truca ha acabat amb la informació.

SomeType* AmbiguousFunction(); // What should be done with the result?

Tradicionalment, les convencions de nomenclatura s'han utilitzat per resoldre l'ambigüitat, que és un enfocament propens a errors i intensiu de mà d'obra. C++11 va introduir una manera de garantir una gestió correcta de la memòria en aquest cas declarant la funció per retornar un unique_ptr ,

std::unique_ptr<SomeType> ObviousFunction();

La declaració del tipus de retorn de la funció com a unique_ptr fa explícit el fet que la persona que truca pren la propietat del resultat, i el temps d'execució de C++ assegura que la memòria es recuperarà automàticament. Abans de C++11, unique_ptr es pot substituir per auto_ptr, que ara està obsolet.

Referències

  1. TylerMSFT. «Smart pointers (Modern C++)» (en anglès americà), 03-08-2021. [Consulta: 23 desembre 2023].
  2. «Smart Pointers in C++» (en anglès americà), 08-06-2014. [Consulta: 23 desembre 2023].
  3. «What is a smart pointer and when should I use one?» (en anglès). [Consulta: 23 desembre 2023].
  4. «smart pointers - cppreference.com» (en anglès). [Consulta: 23 desembre 2023].

Read other articles:

Camarodonta Tripneustes ventricosus Klasifikasi ilmiah Domain: Eukaryota Kerajaan: Animalia Filum: Echinodermata Kelas: Echinoidea Superordo: Echinacea Ordo: CamarodontaJackson, 1912 [1] Famili Lihat teks Camarodonta adalah ordo bulu babi (kelas Echinoidea) berbentuk globular. Catatan fosil menunjukkan bahwa ordo bulu babi telah ada sejak Zaman Kapur Awal.[2] Karakteristik Daftar Famili[1] Famili Parasaleniidae (Mortensen, 1903b) Infraordo Echinidea (Kroh & Smith, ...

 

Khujand bahasa Rusia: Худжанд bahasa Tajik: ХуҷандLeninabadKhujand BenderaLambangKhujandLocation in TajikistanKoordinat: 40°17′N 69°38′E / 40.283°N 69.633°E / 40.283; 69.633Koordinat: 40°17′N 69°38′E / 40.283°N 69.633°E / 40.283; 69.633Negara TajikistanProvinsiSughdLuas • Kota40 km2 (20 sq mi) • Luas metropolitan2 651,7 km2 (1 023,8 sq mi)Ketinggian30...

 

Jowai Localidad Jowai Ubicación de Jowai en Megalaya. Jowai Localización de Jowai en MegalayaCoordenadas 25°26′31″N 92°11′49″E / 25.442, 92.1969Entidad Localidad • País  India • Estado Meghalaya • Distrito Jaintia HillsAltitud   • Media 1380 m s. n. m.Población (Est.2010[1]​)   • Total 29 105 hab.Huso horario IST UTC +5:30Código postal 793150[2]​Código de área 3652[editar datos e...

Pierre Mesmer Pierre-Auguste-Joseph Messmer (Vincennes, 20 Maret 1916 - Paris, 29 Agustus 2007) ialah seorang politikus berkebangsaan Prancis, yang menjabat sebagai perdana menteri antara tahun 1972-1974 pada masa pemerintahan Georges Jean Raymond Pompidou. Messmer yang beraliran Gaullis ini adalah anggota Legiun Asing Prancis. Setelah kematian Georges Pompidou pada tahun 1974, para pendukung Messmer mendorongnya untuk mencalonkan diri sebagai Presiden, dan disetujui asalkan Jacques Chaban-De...

 

Slovak footballer (1935–2011) Ján Popluhár Popluhár in 1966Personal informationDate of birth (1935-09-12)12 September 1935Place of birth Čeklís, CzechoslovakiaDate of death 6 March 2011(2011-03-06) (aged 75)Place of death Bernolákovo, SlovakiaPosition(s) SweeperYouth career Slovan BratislavaSenior career*Years Team Apps (Gls)1955–1969 Slovan Bratislava 262 (21)1955–1958 Rudá Hvězda Brno 1969–1970 Lyon 46 (1)1970–1972 Zbrojovka Brno 1972–1979 Slovan Wien Total 308 (22)...

 

Wayang kulit Batara Guru. Bathara Guru adalah Dewa yang merajai ketiga dunia, yakni Mayapada (dunia para dewa atau surga), Madyapada (dunia manusia atau bumi), Arcapada (dunia bawah atau neraka). Namanya berasal dari bahasa Sanskrit Bhattara yang berarti tuan terhormat dan Guru, epitet dari Wrehaspati (Bṛhaspati), seorang Dewa Hindu yang tinggal dan diidentifikasikan dengan planet Jupiter.[1] Mitologi Jawa Menurut mitologi Jawa, Bathara Guru merupakan Dewa yang merajai ketiga dunia,...

Irish professional footballer David Cawley David Cawley playing for Sligo RoversPersonal informationFull name David CawleyDate of birth (1991-09-17) 17 September 1991 (age 32)Place of birth Ballina, IrelandHeight 1.78 m (5 ft 10 in)Position(s) MidfielderYouth career Ballina Town2007–2010 Ipswich TownSenior career*Years Team Apps (Gls)2010–2011 Ipswich Town 0 (0)2012–2015 Sligo Rovers 119 (11)2016 St Patrick's Athletic 18 (0)2017 Galway United 29 (1)2018–2023 Sligo ...

 

Indian politician This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Satish Upadhyay – news · newspapers · books · scholar · JSTOR (March 2023) (Learn how and when to remove this template message) ...

 

Elisa Moreu Consejera del Consejo Consultivo de Aragón Actualmente en el cargo Desde el 2017 Información personalNacimiento 1971 Huesca (España) Nacionalidad EspañolaEducaciónEducada en Universidad de Zaragoza (Lic. en Derecho; 1989-1994)Universidad de Zaragoza (Doc. en Derecho; 1994-1999) Información profesionalOcupación Profesora de universidad, científica del derecho y jurista Área Derecho administrativo y derecho público Empleador Universidad de Zaragoza Miembro de Aso...

Indian politician MuraliBornMuraleedharan Pillai(1954-05-25)25 May 1954Kudavattoor, State of Travancore-Cochin (present day Kollam, Kerala), IndiaDied6 August 2009(2009-08-06) (aged 55)Thiruvananthapuram, Kerala, IndiaNationalityIndianOccupationActorYears active1986 – 2009SpouseMiniChildren1ParentsP. Krishna PillaiK. Devaki Amma Muraleedharan Pillai, popularly known as Murali (25 May 1954 – 6 August 2009) was an Indian film, stage and television actor and author. He mainly appea...

 

Zalewajka từ Piła Zalewajka [1] là một món súp mộc mạc truyền thống được làm từ khoai tây thái hạt lựu và luộc với tràn ngập lúa mạch đen làm từ bánh mì bột chua. Nó cũng thường có cả xúc xích Ba Lan và nấm khô. Gốc Món súp này đến từ vùng trung tâm của Ba Lan. Những đề cập đầu tiên về nó xuất hiện vào thế kỷ 19 ở Łódź và Radomsko. Thành phần cơ bản của chế độ ăn uố...

 

此條目没有列出任何参考或来源。 (2022年10月2日)維基百科所有的內容都應該可供查證。请协助補充可靠来源以改善这篇条目。无法查证的內容可能會因為異議提出而被移除。 戈特隆一世(法語:Gothelon Ier de Lotharingie,967年—1044年4月19日),凡爾登伯爵戈德弗魯瓦一世(英语:Godfrey I, Count of Verdun)之子,1033年統一上下洛林。 子女 戈德弗瓦二世 戈特隆二世(英语:Gothelo II ...

American inventor and engineer A. Baldwin Wood, standing at center, at New Orleans pumping station, 1915 Patent diagram for Wood Screw Pump (page 1) Patent diagram for Wood Screw Pump (page 2) Albert Baldwin Wood (December 1, 1879 – May 10, 1956) was an inventor and engineer from New Orleans, Louisiana. He graduated from Tulane University with a Bachelor of Science in Engineering in 1899. Wood was hired by the Sewerage & Water Board of New Orleans in 1899, to try to improve the flood-pr...

 

Indian film director A. T. Krishnaswamyஏ. டி. கிருஷ்ணசாமிKrishnaswamy in 1940sBorn1905Died1987 (aged 81–82)NationalityIndianOccupation(s)director, producerYears active1930s – 1971Known forSabapathy A. T. Krishnaswamy (1905–1987) was an Indian director best known for the film Sabapathy.[1] Career Krishnaswamy joined the A. V. Meiyappan unit as an assistant during the mid-1930s and worked on all AVM projects. He made his directorial d...

 

Fictional character in the KonoSuba series Fictional character Kazuma SatōKonoSuba characterKazuma as seen in promotional artwork for KonoSuba: Fantastic DaysFirst appearanceOh! My Useless Goddess!December 20, 2012Created byNatsume AkatsukiVoiced byJun Fukushima (Japanese)Arnie Pantoja (English)Ryōta Ōsaka (Drama CD)BirthdayJune 7In-universe informationAliasSatou KazumaGenderMaleOccupationAdventurerAffiliation Japan (formerly) Kingdom of BelzergWeaponchunchunmaru (Japanese sword)...

Mountain in Bolivia ChiwanaChiwanaLocation in Bolivia Highest pointElevation5,301 m (17,392 ft)[1]Coordinates21°06′14″S 67°51′52″W / 21.10389°S 67.86444°W / -21.10389; -67.86444GeographyLocationBoliviaPotosí DepartmentParent rangeAndes Chiwana (Quechua chiway mating of birds, -na a suffix,[2] where the birds mate, Hispanicized spelling Chiguana) is a 5,301-metre-high (17,392 ft) mountain in Bolivia. It is located in the ...

 

See also: Kalakan District in Kabul Province, AfghanistanKalakan DistrictDistrictLocation in Kabul ProvinceCountry AfghanistanProvinceKabul ProvinceCapitalKalakanPopulation (2015) • Total30,962Time zoneUTC+04:30 (AST) Kalakan District is located in the northern part of Kabul Province, Afghanistan. It borders Guldara District to the west, Qarabagh District to the north, Dih Sabz District to the east and Mir Bacha Kot District to the south. The population is 26,800 (2006)....

 

American librarian Charles H. ComptonPresident of the American Library AssociationIn office1934–1935Preceded byGratia A. CountrymanSucceeded byLouis Round Wilson Personal detailsBornCharles Herrick Compton(1880-10-24)October 24, 1880Palmyra, Nebraska, USDiedMarch 17, 1966(1966-03-17) (aged 85)St. Louis, Missouri, USEducationUniversity of NebraskaOccupationLibrarian Charles Herrick Compton (October 24, 1880 – March 17, 1966)[1] was an American librarian and educator. Compton e...

La cattedrale cattolica dell'Assunzione di Nostra Signora a Mansa Questa è una lista delle cattedrali nello Zambia. Indice 1 Cattedrali cattoliche 2 Cattedrale anglicana 3 Voci correlate 4 Altri progetti 5 Collegamenti esterni Cattedrali cattoliche Cattedrale Arcidiocesio Diocesi Località Cattedrale di Gesù Bambino Arcidiocesi di Lusaka Lusaka Cattedrale di Sant'Anna Diocesi di Chipata Chipata Cattedrale del Sacro Cuore di Gesù Diocesi di Kabwe Kabwe Cattedrale di Santa Teresa Diocesi di ...

 

British TV sitcom (1969–1973) This article is about the TV series. For the first spin-off film, see On the Buses (film). On the BusesTitle card used from series 3 to 6; the animated titles were introduced in series 2.GenreSitcomCreated by Ronald Chesney Ronald Wolfe Written by Ronald Chesney Ronald Wolfe Bob Grant Stephen Lewis George Layton Jonathan Lynn Directed by Stuart Allen Howard Ross Derrick Goodwin Bryan Izzard Starring Reg Varney Bob Grant Anna Karen Cicely Courtneidge (1969) Dori...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!