new delete operators c with examples
Ontdek alles over nieuwe / verwijderoperatoren in C ++.
We hebben al variabelen en statische arrays in C ++ gezien in onze eerdere tutorials.
Wat betreft het geheugen dat is toegewezen aan de variabelen en arrays, is het het statische geheugen dat wordt toegewezen door de compiler, afhankelijk van het gegevenstype (in het geval van variabelen) en de afmetingen die voor arrays worden geboden.
Het geheugen dat door de compiler is toegewezen, wordt op de stapel toegewezen. Maar in de meeste gevallen zijn we ons misschien niet bewust van de exacte hoeveelheid geheugen die we nodig hebben.
Lees hier de populaire C ++ trainingsserie.
Wat we zouden doen is zoveel geheugen toewijzen als we willen en ook wanneer en wanneer we het willen. Dit wordt gedaan door het geheugen dynamisch toe te wijzen. In tegenstelling tot statische toewijzing, wordt dynamisch toegewezen geheugen toegewezen op de heap.
Dynamische geheugentoewijzing is handig omdat we geheugen met een variabele grootte kunnen toewijzen dat we niet kunnen bereiken met het toegewezen geheugen van de compiler. We hebben de flexibiliteit om geheugen toe te wijzen wanneer we het nodig hebben en het weer vrij te geven wanneer we het niet nodig hebben.
Maar afgezien van deze toepassingen, moeten we ook in gedachten houden dat in het geval van dynamisch toegewezen geheugen, het de verantwoordelijkheid van de gebruiker is om het geheugen vrij te geven. Als we vergeten het geheugen vrij te geven, veroorzaakt dit een geheugenlek waarbij het geheugen pas weer wordt toegewezen als het programma wordt beëindigd.
Dit kan ertoe leiden dat er te veel geheugen wordt gebruikt en daarmee ernstige bottlenecks.
Wat je leert:
- Dynamische geheugentoewijzing
- De 'nieuwe' Operator
- De 'nieuwe' operator gebruiken met arrays
- De Delete Operator
- Gevolgtrekking
- Aanbevolen literatuur
Dynamische geheugentoewijzing
C-taal gebruikt ‘malloc’, ’calloc’ en ‘realloc’ functies om geheugen dynamisch toe te wijzen. Om het geheugen dat dynamisch aan deze functies is toegewezen vrij te maken, gebruikt het een ‘gratis’ functieaanroep. De taal C ++ ondersteunt deze functies ook vanuit de taal C om geheugen toe te wijzen / ongedaan te maken.
Afgezien van deze functies, introduceert C ++ twee nieuwe operators die efficiënter zijn om het dynamische geheugen te beheren. Dit zijn de ‘nieuwe’ operator voor het toewijzen van geheugen en de ‘delete'-operator voor het vrijgeven van geheugen.
In deze zelfstudie leren we meer over nieuwe en verwijderoperatoren in C ++ - taal.
De 'nieuwe' Operator
De 'nieuwe' operator wijst geheugen toe voor een variabele of een andere entiteit op een heap.
De algemene syntaxis van de 'nieuwe' operator is:
Het hierboven genoemde gegevenstype kan elk geldig gegevenstype zijn dat wordt ondersteund door C ++. Het kan een ingebouwd gegevenstype zijn of elk door de gebruiker gedefinieerd gegevenstype inclusief klassen en structuren.
Bijvoorbeeld,
beste software om het ip-adres te verbergen
In het bovenstaande voorbeeld hebben we een pointervariabele ‘ptr’ gedeclareerd als integer en geïnitialiseerd op null. Met behulp van de 'nieuwe' operator wijzen we geheugen toe aan de variabele 'ptr'. Als er geheugen beschikbaar is op de heap, is de tweede instructie succesvol. Als er geen geheugen beschikbaar is, gooit de nieuwe operator de uitzondering 'std :: bad_alloc'.
Daarom is het een beter idee om te controleren of het geheugen met succes is toegewezen door de nieuwe operator voordat u deze variabele of entiteit in het programma gebruikt.
We kunnen variabelen ook initialiseren met de nieuwe operator als volgt:
In het bovenstaande voorbeeld is de pointervariabele 'ptr' het toegewezen geheugen met behulp van de nieuwe operator en tegelijkertijd is de toegewezen waarde 10. Dit is nog een andere manier van initialisatie in C ++.
De 'nieuwe' operator gebruiken met arrays
Nog een ander gebruik van de 'nieuwe' operator is het toewijzen van geheugen voor arrays. Hier specificeren we het aantal elementen dat aan de array moet worden toegewezen.
Een voorbeeld van het toewijzen van array-elementen met behulp van de 'nieuwe' operator wordt hieronder gegeven:
Hier wijst de nieuwe operator 10 continue elementen van het type integer toe aan de pointervariabele myarray en retourneert de pointer naar het eerste element van myarray.
De Delete Operator
Het geheugen dat dynamisch wordt toegewezen met behulp van de nieuwe operator, moet expliciet worden vrijgegeven door de programmeur. Voor dit doel zijn we voorzien van de 'delete' -operator.
De algemene syntaxis van de delete-operator is:
We kunnen dus het geheugen dat is toegewezen aan de bovenstaande ptr-variabele als volgt vrijmaken:
Deze instructie maakt het geheugen dat aan de variabele 'ptr' is toegewezen, weer vrij in de geheugenpool.
We kunnen ook de delete-operator gebruiken om het geheugen vrij te maken dat aan arrays is toegewezen.
Bijvoorbeeld,het geheugen dat is toegewezen aan de bovenstaande array myarray kan als volgt worden vrijgemaakt:
voorbeeldtestscripts voor het testen van software
Let op de abonnementsoperator die wordt gebruikt met de verwijderoperator. Dit komt omdat we, aangezien we de reeks elementen hebben toegewezen, alle locaties moeten vrijmaken.
Als we in plaats daarvan de verklaring hadden gebruikt,
We weten dat myarray naar het eerste element in de array verwijst, dus de bovenstaande instructie verwijdert alleen het eerste element van de array. Het gebruik van subscript '[]' geeft aan dat de variabele waarvan het geheugen wordt vrijgemaakt een array is en dat al het toegewezen geheugen moet worden vrijgemaakt.
Het onderstaande programmeervoorbeeld toont het gebruik van nieuwe en delete-operators in C ++.
Uitgang:
geheugen succesvol toegewezen
* ptr = 10
* var = 12
myarray-waarden: 1 2 3 4 5 6 7 8 9 10
De schermafbeelding voor hetzelfde wordt hieronder gegeven.
In het bovenstaande codevoorbeeld hebben we het gebruik van nieuwe en delete-operators gedemonstreerd. We hebben de 'nieuwe' operator gebruikt om geheugen toe te wijzen aan een variabele, arrays en ook om een andere variabele met een waarde te initialiseren. Vervolgens verwijderen we deze entiteiten met behulp van de delete-operator.
Gevolgtrekking
Dit gaat allemaal over de nieuwe en delete-operators van C ++ voor zover het standaard datatypes betreft. We kunnen ook nieuwe en verwijderoperatoren gebruiken voor door de gebruiker gedefinieerde gegevenstypen als klassen en structuren.
We zullen meer leren over het gebruik van deze operators voor het maken van objecten wanneer we leren objectgeoriënteerd programmeren met C ++.
Bekijk hier de C ++ Beginnersgids.
Aanbevolen literatuur
- Voorbeelden van rekenkundige en booleaanse operatoren in Unix Shell Script
- MongoDB Update en verwijder document met voorbeelden
- C ++ operators, typen en voorbeelden
- Python-operators
- Python DateTime-zelfstudie met voorbeelden
- Snijd Commando in Unix met voorbeelden
- Bubbelsortering in C ++ met voorbeelden
- Unix Cat Command Syntax, opties met voorbeelden