Munka memóriát új és törölhet, programozás C és C

Mint ismeretes, a C-fe ktsii malloc () és a szabad () használják a dinamikus elosztást és felszabadítása. Azonban, C ++ két végző piaci szereplőket elosztását és felszabadítása memória hatékonyabban és egyszerűbben. Ezek az operátorok új és törölni. Az általános formája a következő:







peremennaya_ukazatel = új VarType;

Ha a memória kiosztás művelet nem hajtható végre, akkor az üzemeltető létrehoz egy új IP-típusú esztergálás xalloc. Ha a program nem elkapjam ezt a kivételt, akkor nem kerül felszámolásra elvégzésére. Bár a rövid programok az alapértelmezett viselkedés kielégítő-nek, a valós alkalmazások általában kell fogni kivétel és kezelési bot azt kell. Annak érdekében, hogy nyomon követhesse e kivétel, akkor többek között a chit-except.h header fájlt.

Számos előnye segítségével új a malloc (). Először is, az új üzemeltető automatikusan kiszámítja a szükséges memóriát. Nincs szükség kezelhető sizeof (). Még fontosabb, hogy megakadályozza a véletlenszerű helytelen mennyiségű memóriát. Másodszor, az új üzemeltető automatikusan visszatér egy mutatót a kívánt típust, így nincs szükség, hogy egy típus konverziós operátor. Harmadszor, mivel a RMS-ro kerül bemutatásra, amely lehet inicializálni a tárgy segítségével az üzemeltető új. Végül az is lehetséges, hogy túlterheli szereplő új és üzemeltető törli globálisan vagy tekintettel az osztály jön létre.







Itt egy egyszerű példa segítségével az új és törölni. Kell fizetnie ATTEN-Manie kezelhető try / catch blokk követni memóriafoglalási hibákat.

#include
#include
int main ()
int * p;
próbálja p = new int; // memória allokáció int
> Fogás (xalloc xa) cout <<"Allocation failure.\n";
vissza 1;
>
* P = 20; // értékadás adott memóriaterület 20
cout <<*р; // демонстрация работы путем вывода значения
törölni p; // szabad memória
vissza 0;
>

Mint megjegyezte, lehetséges, hogy inicializálja a memóriát az új üzemben. Ehhez adja meg az inicializálási érték után zárójelben a típus nevét. Például a következő példában, a memória, ami a mutató p, inicializálja és 99:

#include
#include
int main ()
int * p;
próbálja p = new int (99); // inicializálja a 99.
> Fogás (xalloc xa) cout <<"Allocation failure.\n";
vissza 1;
>
cout <<*p;
törölni p;
vissza 0;
>

Az új tömbök lehet elhelyezni. Az általános formája egy egydimenziós tömb formájában:

peremennaya_ukazatel VarType = új [size];

Itt, a méret határozza meg az elemek száma a tömbben. Emlékezni egy fontos korlát elhelyezésekor a tömböt: nem lehet inicializálni.

Ahhoz, hogy felszabadítsuk a dinamikus elosztása a tömb kell használni az alábbi űrlapot delete nyilatkozata:

Itt a zárójelben [] tájékoztatják az üzemeltető törli, meg kell szabadítani a lefoglalt memóriát a tömbben.

A következő program kiosztott memória egy sor 10 elemek float típusú. Tömb elemeit rendelt értékei 100-109, majd a tömb jelenik meg a képernyőn:

#include
#include
int main ()
float * p;
int i;
próbálja p = új float [10]; // kap a tizedik tömb elem
> Fogás (xalloc xa) cout <<"Allocation failure.\n";
vissza 1;
>
// értékadás a 100-109
for (i = 0; i<10; i + + ) p[i] = 100.00 + i;
// kinyomtatásához egy tömb tartalmát
for (i = 0; i<10; i++) cout < törölni [] p; // törölni az egész tömböt
vissza 0;
>




Kapcsolódó cikkek