Dynamisk tildelt matrise C ++

Dynamisk tildelt matrise C ++

Arrays er en veldig viktig datastruktur i C ++ som tjener formålet med å holde lignende typer elementer. Arrays er hovedsakelig delt inn i to forskjellige typer I.e. statisk og dynamisk. De statiske matriser er de hvis størrelse er forhåndsdefinert i koden, mens de dynamiske matriser er de hvis størrelse er definert ved kjøretiden. I denne artikkelen vil vi eksplisitt snakke om de dynamiske matriser i C++. Dessuten vil vi være spesielt oppmerksom på tildelingen og deallokasjonen ved å dele et detaljert eksempel med deg i Ubuntu 20.04.

Dynamisk tildelte matriser i C++

Vi har allerede uttalt at størrelsen på en dynamisk matrise er definert under kjøretiden. Imidlertid kan man stille spørsmål ved hvorfor vi trenger de dynamisk tildelte matriser i utgangspunktet når vi enkelt kan bruke de statiske matriser? Noen ganger møter du slike situasjoner der størrelsen på en matrise ikke er kjent i utgangspunktet. I disse tilfellene kan du skaffe deg matrisestørrelsen som inndata fra brukeren på kjøretiden.

Men dette er ikke mulig med de statiske matriser siden størrelsen på en statisk matrise som en gang er definert i en kode, ikke kan endres. Det er her de dynamisk tildelte matriserne kommer i spill som kan definere matriser av en hvilken som helst ønsket størrelse ved kjøretiden. De dynamiske matriser i C ++ kan enkelt opprettes med det "nye" nøkkelordet. Den nøyaktige syntaks vil bli avklart senere i denne artikkelen.

Imidlertid er et viktig poeng som skal bemerkes her over at de statiske matriser alltid opprettes på systemets stabel, og systemet ditt i seg selv tar ansvaret for å frigjøre stabelen når programmet ditt avsluttes. På den annen side opprettes de dynamisk tildelte matriser alltid på haugen, og du må frigjøre minnet som er okkupert av en dynamisk matrise manuelt. Nå må du se eksemplet omtalt nedenfor for å forstå bruken av de dynamisk tildelte matriser.

Bruke de dynamisk tildelte matriser i C ++ i Ubuntu 20.04

I dette eksemplet ønsker vi å lære deg bruken av de dynamisk tildelte matriser i C++. Vi vil fortelle deg hvordan du kan erklære og initialisere en dynamisk matrise til kjøretid. Deretter vil vi vise elementene i den dynamisk tildelte matrisen. Til slutt vil vi vise deg hvordan du kan få minnet som er okkupert av den dynamiske matrisen i C++. For å lære alt dette, må du se koden som vises i følgende bilde:

I dette C ++ -programmet har vi vår "Main ()" -funksjon der vi har definert et heltall "Num". Dette heltallet vil samsvare med størrelsen på vår dynamiske rekke som vi skal lage senere. Deretter viste vi en melding på terminalen som ba brukeren om å legge inn hvilken som helst størrelse etter eget valg for den dynamiske matrisen. Etter det tok vi den størrelsen som inndata fra brukeren. Deretter, ved hjelp av uttalelsen "int *array = new int (num)", erklærte vi en dynamisk matrise til runtime som har størrelsen lik "num" -variabelen. “Array” refererer til navnet på denne matrisen.

Etter det har vi vist en melding på terminalen igjen og ber brukeren angi elementene i den matrisen. Denne meldingen blir fulgt av en "for" -sløyfe som itererer til størrelsen på matrisen i.e. Num. Innenfor denne sløyfen tok vi elementene i den dynamiske matrisen som inndata fra brukeren.

Når den dynamiske matrisen var befolket, ønsket vi å vise elementene på terminalen som vi først viste en melding ved hjelp av "cout" -uttalelsen. Deretter har vi en annen "for" -sløyfe som igjen itererer gjennom størrelsen på den dynamiske matrisen. Innenfor denne sløyfen har vi ganske enkelt vist matriseelementene på terminalen. Etter det ønsket vi å få minnet som er okkupert av denne dynamiske matrisen som vi har brukt "Delete [] -array" -uttalelsen ". Til slutt, for å være på den sikre siden, har vi brukt "Array = null" -uttalelsen for også.

Etter å ha skrevet denne koden, ble vi først bedt om å gå inn i størrelsen på den dynamiske matrisen når vi samlet den og utførte. Vi ønsket at vår dynamiske matrise skulle være av størrelse “5” som vist på bildet nedenfor:

Så snart vi kom inn i størrelsen på vår dynamiske matrise, ble vi bedt om å befolke det. For å gjøre det, skrev vi inn tallene fra 1 til 5 som vist i følgende bilde:

Så snart vi trykket på Enter -tasten etter å ha fylt vår dynamiske matrise, ble elementene skrevet ut på terminalen. Dessuten skjedde også omhandlingen av det dynamiske minnet på grunn av at et varsel angående dette også dukket opp på terminalen som vist på bildet nedenfor:

Nå vil vi finjustere den samme koden litt. Frem til nå har vi lært hvordan vi kan initialisere en dynamisk matrise i C ++ og vise elementene på terminalen. Selv om vi også har innarbeidet koden for å få dette minnet i programmet vårt, er vi imidlertid fremdeles ikke sikre på om det okkuperte dynamiske minnet har blitt omhandlet vellykket eller ikke. For å gjøre dette, vil vi prøve å få tilgang til en del av det dynamiske minnet etter at vi har omgjort det. Hvis det er tilgjengelig vellykket, vil det bety at minnetiltaket ikke har funnet sted riktig.

Imidlertid, hvis vi møter en feilmelding mens vi får tilgang til minnet etter at det har omgjort det, vil det bety at vårt okkuperte dynamiske minne nå har blitt behandlet vellykket. Du må se på følgende modifiserte kode for å forstå dette:

I denne modifiserte C ++ -koden har vi ganske enkelt lagt til en linje på slutten av programmet mitt i.e. cout<

Da vi samlet og utførte denne koden, fungerte den perfekt, men så snart denne siste linjen ble utført, ble det generert en feil med henvisning til en segmenteringsfeil som faktisk betyr at du prøver å få tilgang til et minneplass som ikke lenger eksisterer. Dette vises i det vedlagte bildet.

Det betyr at behandlingen av vår dynamiske matrise har funnet sted. Denne utgangen innebærer også at forsøket på å få tilgang til et minneplass som ikke lenger eksisterer bare resulterer i en runtime -feil og ikke en kompilasjonsfeil. Det betyr at en slik kode alltid vil bli satt sammen, og du vil ikke kunne fange en slik feil før du faktisk kjører koden din.

Konklusjon

Denne artikkelen var rettet mot å lære deg bruken av de dynamisk tildelte matriser i C ++ i Ubuntu 20.04. For det fremhevet vi først behovet for å bruke de dynamisk tildelte matriser i C++. Deretter gikk vi deg gjennom et detaljert eksempel som forklarte hvordan du kan lage og håndtere dynamiske matriser i C++. Videre delte vi også metoden for å handle de dynamiske matriser. Etter å ha gått gjennom denne guiden, vil du sikkert få en grunnleggende forståelse av å håndtere dynamiske matriser i C++.