new delete operators c with examples
Prozkoumejte vše o nových / mazaných operátorech v C ++.
Již jsme viděli proměnné a statická pole v C ++ v našich dřívějších cvičeních.
Pokud jde o paměť přidělenou proměnným a polím, jedná se o statickou paměť přidělenou kompilátorem v závislosti na datovém typu (v případě proměnných) a dimenzích poskytovaných pro pole.
Paměť přidělená kompilátorem je přidělena na zásobníku. Ve většině případů si ale nemusíme být vědomi přesného množství paměti, kterou potřebujeme.
=> Přečtěte si zde populární sérii školení C ++.
To, co bychom udělali, je přidělit a zrušit alokaci paměti, kolik chceme a také kdy a kdy ji chceme. To se provádí dynamickým přidělením paměti. Na rozdíl od statické alokace je na haldě přidělena dynamicky přidělená paměť.
Dynamické přidělování paměti je užitečné, protože můžeme přidělit paměť proměnné velikosti, které nemůžeme dosáhnout pomocí paměti přidělené kompilátorem. Máme flexibilitu alokace paměti, když ji potřebujeme, a její alokaci, když ji nepotřebujeme.
Ale kromě těchto použití si musíme také pamatovat, že v případě dynamicky alokované paměti je odpovědností uživatele de-alokovat paměť. Pokud zapomeneme uvolnit alokaci paměti, způsobí to únik paměti, při kterém není uvolněna paměť, dokud program neskončí.
To by mohlo mít za následek použití příliš velkého množství paměti, což by způsobilo vážná úzká místa.
Co se naučíte:
- Dynamické přidělování paměti
- „Nový“ operátor
- Používání „nového“ operátora s poli
- Operátor mazání
- Závěr
- Doporučené čtení
Dynamické přidělování paměti
Jazyk C používá k dynamickému přidělování paměti funkce „malloc“, „calloc“ a „realloc“. K de-alokaci paměti dynamicky přidělené těmto funkcím používá volání funkce „zdarma“. Jazyk C ++ také podporuje tyto funkce z jazyka C pro alokaci / de-alokaci paměti.
Kromě těchto funkcí zavádí C ++ dva nové operátory, které jsou efektivnější pro správu dynamické paměti. Jedná se o operátor „nový“ pro přidělování paměti a operátor „mazání“ pro přidělování paměti.
V tomto kurzu se dozvíme více o nových a mazaných operátorech v jazyce C ++.
„Nový“ operátor
„Nový“ operátor přiděluje paměť pro proměnnou nebo jakoukoli jinou entitu na haldě.
Obecná syntaxe operátoru „new“ je:
pointer_variable_of_data_type = new data type;
Výše uvedený datový typ může být jakýkoli platný datový typ podporovaný C ++. Může to být předdefinovaný datový typ nebo jakýkoli uživatelsky definovaný datový typ, včetně tříd a struktur.
Například,
nejlepší bezplatný ssh klient pro Windows
int *ptr = NULL; ptr = new int();
Ve výše uvedeném příkladu jsme deklarovali proměnnou ukazatele „ptr“ na celé číslo a inicializovali ji na null. Poté pomocí operátoru „new“ přidělíme paměť proměnné „ptr“. Pokud je na haldě k dispozici paměť, bude druhý příkaz úspěšný. Pokud není k dispozici žádná paměť, nový operátor vyvolá výjimku „std :: bad_alloc“.
Proto je lepší před použitím této proměnné nebo entity v programu zkontrolovat, zda je nový operátor úspěšně přidělen paměti.
Proměnné můžeme také inicializovat pomocí nového operátoru následujícím způsobem:
ptr = new int(10);
Ve výše uvedeném příkladu je proměnná ukazatele „ptr“ alokovaná paměť pomocí nového operátoru a současně je přiřazená hodnota 10. Toto je další způsob inicializace v C ++.
Používání „nového“ operátora s poli
Ještě dalším použitím operátoru „new“ je přidělování paměti pro pole. Zde zadáme počet prvků, které mají být pro pole přiděleny.
Níže je uveden příklad přidělení prvků pole pomocí operátoru „new“:
int* myarray = NULL; myarray = new int(10);
Zde nový operátor přiděluje 10 souvislých prvků typu integer proměnné ukazatele myarray a vrací ukazatel na první prvek myarray.
Operátor mazání
Paměť přidělenou dynamicky pomocí nového operátoru musí programátor explicitně uvolnit. Za tímto účelem jsme vybaveni operátorem „mazání“.
Obecná syntaxe operátoru odstranění je:
delete pointer_variable;
Můžeme tedy uvolnit paměť přidělenou výše uvedené proměnné ptr následujícím způsobem:
delete ptr;
Tento příkaz uvolní paměť přidělenou proměnné „ptr“ zpět do fondu paměti.
Můžeme také použít operátor odstranění k uvolnění paměti přidělené polím.
Například,paměť přidělenou výše uvedenému poli myarray lze uvolnit následujícím způsobem:
delete() myarray;
Všimněte si operátoru dolního indexu použitého s operátorem odstranění. Důvodem je, že jelikož jsme přidělili řadu prvků, musíme uvolnit všechna místa.
Místo toho, kdybychom použili příkaz,
delete myarray;
Víme, že myarray ukazuje na první prvek v poli, takže výše uvedený příkaz smaže pouze první prvek pole. Pomocí indexu „()“ označuje, že proměnná, jejíž paměť se uvolňuje, je pole a má se uvolnit veškerá přidělená paměť.
Níže uvedený programovací příklad ukazuje použití operátorů new a delete v C ++.
jak otevírat soubory eps ve Windows 10
// Example program #include #include using namespace std; int main() { int *ptr = NULL; ptr = new int(); int *var = new int(12); if(!ptr) { cout<<'bad memory allocation'< Výstup:
paměť úspěšně přidělena
* ptr = 10
* var = 12
hodnoty myarray: 1 2 3 4 5 6 7 8 9 10
Screenshot stejného obrázku je uveden níže.
Ve výše uvedeném příkladu kódu jsme demonstrovali použití operátorů new a delete. Použili jsme operátor „new“ k alokaci paměti pro proměnnou, pole a také k inicializaci jiné proměnné s hodnotou. Pak tyto entity odstraníme pomocí operátoru odstranění.
Závěr
Jedná se o nové a odstranit operátory C ++, pokud jde o standardní datové typy. Můžeme také použít nové a odstranit operátory pro uživatelem definované datové typy jako třídy a struktury.
Dozvíme se více o použití těchto operátorů pro vytváření objektů, když se naučíme objektově orientované programování pomocí C ++.
=> Prohlédněte si Průvodce pro začátečníky v C ++ zde.
Doporučené čtení
- Příklady aritmetických a booleovských operátorů Unix Shell Script
- Aktualizace MongoDB a odstranění dokumentu s příklady
- C ++ operátory, typy a příklady
- Operátoři Pythonu
- Výukový program Python DateTime s příklady
- Vyjmout příkaz v Unixu s příklady
- Řazení bublin v C ++ s příklady
- Syntaxe příkazů Unix Cat, možnosti s příklady