Sobes.tech
Middle

Vai shared_ptr ir tikai viens atsauces skaitītājs vai vairāki?

sobes.tech AI

Atbilde no AI

// shared_ptr izmanto kopīgu atsauces skaitītāju,
// kas tiek glabāts kontrolblokā.
// Šis kontrolbloks arī satur informāciju par lietotāja delete (deleter)
// un lietotāja alokatoru, ja tie tika nodrošināti, izveidojot shared_ptr.

// Katra kopija shared_ptr, kas norāda uz to pašu objektu,
// atsaucas uz šo vienīgo kontrolbloku un palielina/mazina
// kopējo skaitītāju kopēšanas/noņemšanas laikā.

// Papildus kopīgajam atsauces skaitītājam shared_ptr,
// kontrolbloks arī satur vāju atsauces skaitītāju (weak count)
// vājiem norādītājiem (weak_ptr), kas norāda uz to pašu objektu.

// Tādējādi, katram objektam, ko pārvalda shared_ptr,
// ir tikai viens stiprs atsauces skaitītājs (shared_ptr) un viens vāju atsauces skaitītājs (weak_ptr),
// glabāts vienā kontrolblokā.