Leer te begrijpen C++ Pointers (5 / 6 stap)

Stap 5: Weet u niet welke maat u bent?

HOOPJES VAN GEHEUGEN

C++ maakt samen met de stack, een andere grote pool van geheugen genaamd de heap. De heap kan worden gebruikt door de programmeur naar gratis of verdeelt, geheugen moet worden gebruikt voor het programma. Een programmeur kan het toewijzen van een willekeurige hoeveelheid geheugen uit de hoop dat met het sleutelwoord "nieuwe" zoals in het volgende voorbeeld:

char * pArray = nieuwe char [256];

U kunt het sleutelwoord new als je niet weet hoeveel geheugen je programma zal gebruiken.

Een gemeenschappelijk probleem dat veel programmeurs tegenkomen wanneer de toewijzing van geheugen iets is genaamd een "buffer overflow". Een bufferoverloop treedt op wanneer een uitdrukking of functie geheugen in de aangrenzende geheugenlocaties overschrijft. Dit kan gebeuren als gevolg van vaste lengte, matrices. Een gemeenschappelijk gebruik van matrices is te houden van tekenreeksen. U kunt twee tekenreeksen samen tot één aaneengeschakelde tekenreeks maken overstag. Als de hoeveelheid tekens in de tekenreeks gewoon groter dan de grootte van de matrix, dan jij is veroorzaakt een bufferoverloop.

(WAARSCHUWING: BUFFER OVERFLOWS ZIJN EEN GEMEENSCHAPPELIJK EXPLOITEREN DOOR HACKERS GEBRUIKT OM WILLEKEURIGE CODE UITVOEREN OP EEN EXTERN SYSTEEM.)

VERGEET NIET OM SCHOON TE MAKEN NA JEZELF

De toewijzing van geheugen off van de heap is een keurige eigenschap, maar het heeft een zeer groot gevaar in C++: als u geheugen off van de heap toewijzen, moet u niet vergeten om het terug.

U terug geheugen naar de heap die met het sleutelwoord "verwijderen" zoals hieronder:

char * pArray = nieuwe char [256];
... gebruik van het geheugen alle gewenste...

nu terugkeren het geheugenblok naar de heap
verwijderen [] pArray;
pArray = NULL;

(Nota: gebruik verwijderen verwijderen [] voor een matrix te retourneren van een niet-array.)

Als u geen heap memory retourneert wanneer u klaar bent met het, zal uw programma langzaam verbruiken geheugen en uiteindelijk meer en meer als het besturingssysteem probeert te vervullen de blijkbaar onverzadigbare gulzigheid vertragen. Uiteindelijk, zal het programma tot stilstand gekomen, zoals de o/s kan niet langer voldoen aan de verzoeken voor geheugen.

Terugkeer van hetzelfde geheugen naar de heap is niet zo heel slecht. Dat zorgt ervoor dat uw programma crasht vrijwel onmiddellijk. Het wordt beschouwd als goede programmering praktijken op nul uit een aanwijzer zodra u het geheugenblok waarnaar het verwijst voor twee zeer goede redenen hebt verwijderd:

●Deleting een pointer die NULL bevat heeft geen effect.
●Null is nooit een geldig adres. Proberen om toegang tot het geheugen op de NULL-locatie zal altijd zorgt ervoor dat uw programma crash onmiddellijk, die zal uiteinde u uit dat er een probleem is en maakt het een stuk gemakkelijker te vinden.

U hoeft te verwijderen van geheugen als uw programma spoedig afsluiten zal-alle heap-geheugen wordt hersteld op het besturingssysteem wanneer een programma wordt beëindigd. Terugkeer van geheugen dat u buiten de heap toewijzen is echter een goede gewoonte om te gaan.

Gerelateerde Artikelen

RC Power wielen voor een gehandicapt kind

RC Power wielen voor een gehandicapt kind

Ontmoet Oliver en zijn macht wielen jeep. Oliver is de kleinzoon van een goede vriend van mij. Oliver heeft hersenverlamming, maar laat hem gek je niet, hij houdt om te rijden rond in een voertuig van macht wielen net als elke andere jongen. Oliver h
Hoe lees ik .aiff bestanden met behulp van C

Hoe lees ik .aiff bestanden met behulp van C

het doel van deze instructies is om u te tonen hoe lees ik een .aiff-geluidsbestand. Net als alle andere binaire bestanden, .aiff bestand is ook bestaat uit verschillende geheugen brokken. Deze tutorial zal lezen via de gemeenschappelijke Brok van he
Leer en bouwen van een race spec drone

Leer en bouwen van een race spec drone

Vandaag, ik ga je leren hoe te vliegen en bouwen een drone "multi rotor" in ons geval een Quadcopter. In deze tutorial, ik zal u begeleiden door middel van de regels en voorschriften van een drone vliegen, dan ik zal beginnen met het begeleiden
Hoe boost IQ + leer iets met 50.000 pagina's van stimulerende boeken!

Hoe boost IQ + leer iets met 50.000 pagina's van stimulerende boeken!

Hoe mensen slimmer?-Door te leren!-Degenen die zich beter richten op zelf-onderwijs en leren hebben de potentie om autodidact genieën zoals Leonardo da Vinci en Einstein!Dit instructable toont je hoe lezing versterkt van uw intelligentie en verbetert
Houten zwaarden en How I Learned to Love leer-werk

Houten zwaarden en How I Learned to Love leer-werk

Mijn 6 jaar oude neefje heeft al in de omgeving van 10 maanden op mijn geval te bouwen hem een houten zwaard. Hoewel ik zie hem alleen om de paar maanden, elk gesprek begint en eindigt met, "Hoe zijn mijn houten zwaarden coming along?" Ik heb ei
Hoe lees ik een schuifmaat (caliper)

Hoe lees ik een schuifmaat (caliper)

kijken naar een vroege remklauw, zult u merken dat het nogal ziet als een tomahawk eruit en een schaal langs de lange zijde heeft. Meer over de schaal later. Op de bodem verlaten, het "blad van de bijl" zijn de kaken van de remklauw voor het met
Hoe ontwerp, Print en gebruik 3D gedrukte leer stempels!

Hoe ontwerp, Print en gebruik 3D gedrukte leer stempels!

Tooling leder en produceren prachtige en ingewikkelde patronen met de hand kunnen zeer uitdagend zijn. Hebben gedaand nu verschillende leer projecten, ik heb veel geleerd over het werken met leer, en als zodanig ben ik altijd op zoek naar nieuwe en b
Procedure: Leer gebonden dagboek

Procedure: Leer gebonden dagboek

De inspiratie voor dit project kwam uit de enorme verspilling van papier op mijn kantoor. Er zijn bepaalde processen ons systeem door die resulteren gaat in afdrukken uit stukjes papier met slechts een kleine hoeveelheid overbodige tekst aan de boven
3-in-1 leer Dr. Whoo uil met bril masker

3-in-1 leer Dr. Whoo uil met bril masker

Genoemd door mijn vriend Christine tijdens een 'Naam This Mask' poll op Facebook, Dr. Whoo is een leuke, veelzijdige masker/bril combo die je kunt dragen verschillende manieren en weergeven als kunst wanneer niet anders in gebruik.Stap 1: Let's Get S
Leer hoe te maken een OS

Leer hoe te maken een OS

een OS (werkend systeem) is het fundament van elke computer. Het bevat alle programma's en bestanden die nodig zijn voor de computer te laten functioneren. Besturingssystemen zijn gemaakt van honderdduizenden regels code en meestal is geprogrammeerd
Hoe te maken van een leer dagboek of Notebook gebonden

Hoe te maken van een leer dagboek of Notebook gebonden

Leren om te maken een leer gebonden dagboek of notebook uit een oude leren jas en een goedkope laptop.Stap 1: Versterking van de covers van laptopGrootte kartonnen in stukken gehakt te versterken van covers van uw laptop. Gebruik hete lijmpistool toe
Leer nieuwe Testament Grieks

Leer nieuwe Testament Grieks

een mogelijkheid om te gebruiken het Grieks van het nieuwe Testament is een grote hulp bij het bestuderen van de Bijbel. De meeste predikanten zijn verplicht om te studeren het Koine' Grieks common tijdens de eerste eeuw toen het nieuwe Testament wer
Leer het alfabet terug in 5 minuten

Leer het alfabet terug in 5 minuten

In dit instructable ik leer je verschillende manieren om te leren het alfabet makkelijk achteruit in slechts 5 minuten met behulp van gemakkelijk geheugen trucs.Het is mogelijk voor een weddenschap, voor indruk op je vrienden, of passeren een soberhe
Begrijpen hoe ben radio's werken.

Begrijpen hoe ben radio's werken.

Als u een beeld hebben van hoe AM radiowerk dan u een basiskennis hebben van hoe radio en zelfs TV werkt.In een poging om alle dit begrijpelijk is voor de beginnende enkele van de uitleg kan worden gesimplificeerd.Voor nu net Lees dit volgende deel e