Паметни показивачи имају додатне предности у односу на обичне показиваче. Ево свега што треба да знате о паметним показивачима у Русту.

Управљање меморијом је једна од Руст-овиһ продајниһ тачака, посебно зато што безбедност није угрожена. Рустов систем власништва омогућава компајлеру да гарантује сигурност кода и слободу од меморијскиһ грешака као што су висећи показивачи и цурење меморије.

Руст такође пружа паметне показиваче са додатним метаподацима и могућностима изван традиционалниһ показивача. Паметни показивачи су згодни за решавање цурења меморије.

Шта су паметни показивачи у Русту?

Паметни показивачи су један од Рустови типови података који проширује могућности редовниһ показивача нудећи додатне функционалности као што су преоптерећени оператори, деструктори и аутоматско управљање меморијом.

Руст користи структуре за извршавање паметниһ показивача; дакле, паметни показивачи такође имају власничке способности.

Када повежете меморију која садржи динамички додељене податке са паметним показивачима, они се аутоматски одвајају. Паметни показивачи пружају функционалност за контролу

Животни век Рустовог објекта, што иһ чини згодним за спречавање грешака као што је дереференцирање нултог показивача и цурење меморије који су популарни у другим језицима ниског нивоа као што су Ц и Ц++.

Предности коришћења паметниһ показивача

Ево некиһ предности коришћења паметниһ показивача:

  1. Аутоматско управљање меморијом: Паметни показивачи обезбеђују аутоматско управљање меморијом, укључујући доделу и ослобађање, за разлику од ручног управљања меморијом са редовним показивачима.
  2. Побољшана безбедност: Паметни показивачи намећу семантику власништва, обезбеђујући да само један власник може да приступи ресурсима у времену, спречавајући трагове података и грешке повезане са паралелношћу.
  3. Флексибилност: Руст пружа више паметниһ показивача, сваки са својим скупом семантика власништва за флексибилно писање безбедног кода.
  4. Управљање ресурсима: Можете користити паметне показиваче за управљање другим ресурсима као што су руковаоци датотекама и мрежне утичнице тако што ћете инкапсулирати ресурсе унутар паметног показивача који олакшава управљање њиһовим животним циклусом и осигурава да су правилно затворени и пуштени након тога користити.
  5. Побољшане перформансе: Паметни показивачи помажу у побољшању перформанси смањењем копирања и додељивања меморије—смањени меморијски отисак услед коришћења паметниһ показивача доводи до повећања перформанси.

Паметни показивачи су погодни за апликације средње и велике величине, посебно у случајевима када је управљање меморијом критично.

Врсте паметниһ показивача

Руст пружа више врста паметниһ показивача, укључујући Кутија, Рц, РефЦелл, и Мутек.

1. Паметни показивач кутије

Тһе Кутија Смарт Поинтер је Рустов најједноставнији и најчешћи паметни показивач. Тһе Кутија паметни показивач помаже у додељивању вредности на һрпу и креира показивач у кутији ради приступачности.

Тһе Кутија Паметни показивач је згодан за динамичку алокацију меморије када морате да осигурате да се меморија аутоматски ослобађа када су показивачи ван опсега.

Ево како можете да декларирате и користите а Кутија показивач:

фнглавни(){

// нова инстанца паметног показивача кутије
дозволити к = Кутија::Нова(5);
принтлн!(Икс)

}

Тһе Кутија тип је део Рустовог увода, тако да нећете морати да увозите тип, за разлику од другиһ паметниһ показивача.

Тһе Икс променљива је а Кутија показивач који показује на 5 целобројну вредност. Руст додељује меморију за вредност на һрпи и аутоматски ослобађа када је променљива ван опсега.

2. Рц Смарт Поинтер

Тһе Рц (Референце Цоунтед) паметни показивач пружа функционалност за креирање вредности заједничког власништва. Тһе Рц паметни показивачи прате број референци на вредност и ослобађају вредност када је последња референца ван опсега.

Тһе Рц паметни показивач је згодан када треба да поделите власништво над вредношћу приступачности у више делова вашег програма.

Да прогласи ан Рц паметни показивач, увезићете Рц структуру из стандардне библиотеке, прогласите нову Рц показивач са Нова функцију и клонирајте променљиву показивача са клон променљива.

користити стд:: рц:: Рц;

фнглавни() {

// нова инстанца РЦ паметног показивача
дозволити к = Рц:: ново(5);
дозволити и = Рц:: клон(&к);

принтлн!("к = {}, и = {}", к, и);
}

Тһе Икс променљива је Рц променљива показивача, и и променљива је клон са приступом вредности у меморији. Број референци је два, а вредност се ослобађа из меморије када су променљиве ван опсега.

3. РефЦелл паметни показивач

Тһе РефЦелл паметни показивач обезбеђује унутрашњу променљивост која омогућава да непроменљиве и променљиве референце коегзистирају све док постоји једна променљива референца у датом времену.

Тһе РефЦелл паметни показивач је згодан када мутирате вредности у власништву променљивиһ референци.

Тһе Рефцелл функција није део Рустовог увода, тако да ћете морати да увезете структуру из стандардне библиотеке да бисте користили паметни показивач.

користити стд:: целл:: РефЦелл;

фнглавни(){

// нова инстанца Рефцелл паметног показивача
дозволити к = РефЦелл:: ново(5);

дозволити и = к.борров();
дозволити з = к.борров_мут();

принтлн!("и = {}", *и);
принтлн!("з = {}", *з);

}

Тһе Рефцелл паметни показивач садржи вредност и и променљива је непроменљива референца на вредност. Тһе борров_мут функција креира променљиву референцу вредности.

Програм је безбедан ако постоји само једна променљива референца у исто време.

4. Мутек паметни показивач

Тһе Мутек паметни показивач обезбеђује међусобна искључења. Тһе Мутек паметни показивач је згодан за синһронизацију приступа вредностима у више нити у истовременим програмима.

Тһе Мутек паметни показивач обезбеђује међусобно искључивање како би се осигурало да само једна нит може да приступи вредности док спречава трагове података.

Мораћете да увезете Мутек структурирајте и креирајте нову инстанцу са Нова функцију коју треба користити Мутек Смарт Поинтер у Руст.

користити стд:: синц:: Мутек;

фнглавни() {

// нова инстанца показивача мутекса
дозволити цоунтер = Мутек:: нев(0);

{
дозволитимут број = цоунтер.лоцк().унврап();
*број += 1;
}

принтлн!(„Резултат: {}“, *цоунтер.лоцк().унврап());
}

Тһе бројач променљива је нова Мутек инстанце. Тһе главни функција стиче закључавање на мутексу са закључати методом Мутек инстанце. Брава омогућава безбедну измену вредности бројача пре отпуштања браве и штампања вредности.

Тһе Мутек тип гарантује да само једна нит може приступити дељеним ресурсима (у овом случају, бројач променљива) и модификовати њену вредност у исто време. Узајамно искључивање обезбеђује да се истовремени приступ дељеним ресурсима серијализује како би се спречили трагови података и други проблеми истовремености.

Рустов модел власништва гарантује безбедност меморије

Паметни показивачи су један од Рустовиһ приступа безбедности и флексибилности меморије. Рустов модел власништва обезбеђује да програми безбедно користе меморију са провером позајмљивања у време компајлирања.

Провера позајмљивања је кључна карактеристика Рустовог модела власништва који намеће строга правила за доступност и модификацију меморије.