new delete operators c with examples
Utforska allt om nya / ta bort operatörer i C ++.
Vi har redan sett variabler och statiska matriser i C ++ i våra tidigare handledning.
När det gäller minnet som tilldelats variablerna och matriserna är det det statiska minnet som tilldelas av kompilatorn beroende på datatyp (i fall av variabler) och dimensioner som tillhandahålls för matriser.
Minnet som tilldelats av kompilatorn tilldelas på stacken. Men i de flesta fall kanske vi inte känner till den exakta mängden minne vi behöver.
=> Läs igenom den populära C ++ träningsserien här.
Vad vi skulle göra är att tilldela och avdela så mycket minne som vi vill och även när och när vi vill ha det. Detta görs genom att dynamiskt fördela minnet. Till skillnad från statisk allokering tilldelas dynamiskt allokerat minne på högen.
Dynamisk minnesallokering är användbar eftersom vi kan allokera minne med variabel storlek som vi inte kan uppnå med kompilatorallokerat minne. Vi har flexibiliteten att fördela minne när vi behöver och avdela det när vi inte behöver det.
Men bortsett från dessa användningsområden måste vi också komma ihåg att i händelse av dynamiskt allokerat minne är det användarens ansvar att avdela minnet. Om vi glömmer att avdela minnet orsakar det en minnesläcka där minnet inte delas ut förrän programmet avslutas.
Detta kan resultera i att för mycket minne används och orsakar allvarliga flaskhalsar.
Vad du kommer att lära dig:
- Dynamisk minnesallokering
- Den 'nya' operatören
- Använda den 'nya' operatören med matriser
- Radera operatören
- Slutsats
- Rekommenderad läsning
Dynamisk minnesallokering
C-språket använder 'malloc', 'calloc' och 'realloc' -funktioner för att allokera minne dynamiskt. För att avdela det minne som allokerats dynamiskt med dessa funktioner använder det ”gratis” funktionsanrop. C ++ språk stöder också dessa funktioner från C-språket för att allokera / avdela minne.
Förutom dessa funktioner introducerar C ++ två nya operatörer som är mer effektiva för att hantera det dynamiska minnet. Dessa är 'nya' operatörer för att allokera minne och 'radera' operatör för att allokera minne.
I den här handledningen lär vi oss mer om nya och ta bort operatörer på C ++ - språk.
Den 'nya' operatören
Den 'nya' operatören tilldelar minne för en variabel eller någon annan enhet på en hög.
Den allmänna syntaxen för den 'nya' operatören är:
pointer_variable_of_data_type = new data type;
Datatypen som nämns ovan kan vara vilken giltig datatyp som helst som stöds av C ++. Det kan vara en inbyggd datatyp eller vilken användardefinierad datatyp som helst, inklusive klasser och strukturer.
Till exempel,
bubblasortering c ++ - algoritm
int *ptr = NULL; ptr = new int();
I exemplet ovan har vi förklarat en pekervariabel 'ptr' till heltal och initierat den till null. Sedan använder vi den 'nya' operatören tilldelar vi minne till 'ptr' -variabeln. Om det finns minne på högen kommer det andra uttalandet att lyckas. Om inget minne är tillgängligt, kastar den nya operatören undantaget “std :: bad_alloc”.
Därför är det en bättre idé att kontrollera om minnet tilldelas framgångsrikt av den nya operatören innan du använder denna variabel eller enhet i programmet.
Vi kan också initiera variabler med den nya operatören enligt följande:
ptr = new int(10);
I exemplet ovan är pekervariabeln 'ptr' det allokerade minnet med den nya operatören och samtidigt är det tilldelade värdet 10. Detta är ännu ett sätt att initiera i C ++.
Använda den 'nya' operatören med matriser
Ytterligare en annan användning av den 'nya' operatören tilldelar minne för matriser. Här specificerar vi antalet element som ska tilldelas för matrisen.
Ett exempel på att allokera matriselement med 'ny' operatör ges nedan:
int* myarray = NULL; myarray = new int(10);
Här tilldelar den nya operatören tio kontinuerliga element av typen heltal till pekvariabeln myarray och returnerar pekaren till det första elementet i myarray.
Radera operatören
Minnet som tilldelats dynamiskt med den nya operatören måste frigöras uttryckligen av programmeraren. För detta ändamål får vi operatören 'radera'.
Den allmänna syntaxen för borttagningsoperatören är:
delete pointer_variable;
Så vi kan frigöra minnet som tilldelats ptr-variabeln ovan enligt följande:
delete ptr;
Detta uttalande frigör minnet som tilldelats variabeln 'ptr' tillbaka till minnespoolen.
Vi kan också använda borttagningsoperatören för att frigöra minne som tilldelats matriser.
Till exempel,minnet som tilldelats arrayen myarray ovan kan frigöras enligt följande:
delete() myarray;
Observera abonnemangsoperatören som används med borttagningsoperatören. Detta beror på att vi måste frigöra alla platser eftersom vi har tilldelat en rad element.
Istället, om vi hade använt uttalandet,
delete myarray;
Vi vet att myarray pekar på det första elementet i arrayen, så ovanstående uttalande tar bara bort det första elementet i arrayen. Med hjälp av prenumerationen “()” indikeras att variabeln vars minne frigörs är en matris och allt tilldelat minne ska frigöras.
Nedanstående programmeringsexempel visar användningen av nya och radera operatorer i C ++.
// 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'< Produktion:
minne tilldelats framgångsrikt
* ptr = 10
*var = 12
myarray värden: 1 2 3 4 5 6 7 8 9 10
Skärmdumpen för detsamma ges nedan.

I ovanstående kodexempel har vi visat användningen av nya och radera operatörer. Vi har använt den 'nya' operatören för att allokera minne för en variabel, matriser och samt initiera en annan variabel med ett värde. Sedan tar vi bort dessa enheter med hjälp av borttagningsoperatören.
Slutsats
Det här handlar om de nya och radera operatörerna av C ++ vad gäller standarddatatyper. Vi kan också använda nya och ta bort operatörer för användardefinierade datatyper som klasser och strukturer.
Vi lär oss mer om användningen av dessa operatörer för att skapa objekt när vi lär oss objektorienterad programmering med C ++.
=> Ta en titt på C ++ nybörjarguiden här.
webbplats för att titta på anime gratis
Rekommenderad läsning
- Unix Shell Script Aritmetic och Boolean Operators Exempel
- MongoDB uppdatera och ta bort dokument med exempel
- C ++ operatörer, typer och exempel
- Python-operatörer
- Python DateTime-handledning med exempel
- Klipp kommandot i Unix med exempel
- Bubblesortering i C ++ med exempel
- Unix Cat Command Syntax, alternativ med exempel