delete är ett nyckelord för programmeringsspråket C++ , som ursprungligen introducerades i standarden för att hantera frigörandet av minne som tilldelats av new. I den moderniserade C++11- standarden tilldelades nyckelordet deleteockså rollen som en åtkomstspecifikator för speciella klassmedlemsfunktioner , vilket förbjuder deras användning [1] .
I programmeringsspråket C++ returnerar operatören deleteminnet som tilldelats av operatören newtillbaka till högen . Samtalet deletemåste ske för varje samtal newför att undvika minnesläckor . Efter anropet deleteblir objektet som pekar på detta minnesområde ogiltigt och ska inte längre användas. Många programmerare tilldelar 0 (nullpekare) till pekare efter användning deleteför att minimera programmeringsfel. Att ta bort nollpekaren har ingen faktisk effekt, så det finns inget behov av att kontrollera pekaren för lika med 0 innan du anropar delete(en sådan kontroll är en del av operatörens algoritm delete).
Kodavsnitt som exempel:
int * p_var = nullptr ; // deklaration av en ny pekare p_var = new int ; // minne är dynamiskt allokerat /* ....... resten av koden ........*/ ta bort p_var ; // minne är frigjort p_var = nullptr ; // pekaren ersätts av en nollpekareArrayer skapade (allokerade) med new [], kan på liknande sätt förstöras (avallokeras) med delete []:
int storlek = 10 ; int * p_var = nullptr ; // deklaration av en ny pekare p_var = new int [ storlek ]; // minne är dynamiskt allokerat /* ...... resten av koden ........*/ ta bort [] p_var ; // minne är frigjort p_var = nullptr ; // pekaren ersätts av en nollpekareAtt anropa delete[]en array av objekt kommer att anropa destruktorn för varje objekt innan minnet som tilldelats för arrayen frigörs.
Med utvecklingen av C++-språket och standardiseringen av RAII-new teknik i moderna mjukvaruprodukter rekommenderas deleteinte användningen av manuell minnesallokering med användning och operationer [2] .
I språkstandarden C++11 deleteutökades sammanhanget för att använda nyckelordet och det började användas inte bara som en operation i samband med operationen newutan också som en specificator tillsammans med nyckelordet default. I denna roll har specificatorns funktion deleteblivit en explicit begränsning av åtkomst till speciella klassmetoder ( konstruktörer , destruktorer , flyttkonstruktörer, tilldelningsoperatorer, etc.) defaultSpecifieraren låter dig på samma sätt specificera klassmetoden som kompilatorn instrueras att använda som standard [1] .